我试图弄清楚$ .get和$ .getJSON之间的区别

我有一个称为Test.JSON的外部文件,它仅包含以下内容:

{ "name": "John" }


我可以用

$.getJSON('Test.JSON', function(data) {
  console.log(data);
});


或这个

$.get('Test.JSON', function(data) {
  console.log(data);
});


而且我在控制台中得到了相同的结果,

Object {name: "getJSON"}


是因为我的文件扩展名为.JSON吗?

如果我将文件扩展名更改为.js(即Test.js),则$ .get不会打印到控制台,但是$ .getJSON仍会得到相同的结果

作为该问题的第二部分,我认为如果我用单引号将对象包含在Test.js中,

'{ "name": "John" }'


那么我可以这样做:

$.get('Test.js', function(data) {
  console.log($.parseJSON(data));
});


但这给了我

Uncaught SyntaxError: Unexpected token '


如您所见,我完全感到困惑。

最佳答案

如果$.getJSON


jQuery发送Accept: application/json标头
jQuery解释入站响应,将其转换为JavaScript对象,然后将其传递到回调中(因此您不必弄乱eval或其他转换机制)。


许多服务器端框架(例如Rails)会自动检测Accept标头并适当地处理请求。如果您使用其他框架或使用自己的框架,则可以检查Accept标头以检测format。

10-05 20:41
查看更多