我试图弄清楚$ .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。