我想弄清楚$。$.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),则$. js的控制台不会打印任何内容。但是对于$.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或其他转换机制混淆)。
Accept
标头并适当地处理请求。如果您正在使用不同的框架或使用自己的框架,则可以检查Accept
标头以检测格式。
出现语法错误的原因是:
"'{ "name": "John" }'"
如果没有额外的单引号, $.parseJSON
应该可以正常工作。你确定第一次试的时候没有打错字吗?
我去掉了单引号,所以Test.js就是
{ "name": "John" }
当我尝试
$.get('Test.js', function(data) {
console.log($parseJSON(data));
});
控制台没有显示任何内容。
如果我这样做
var data = '{"name":"John"}'
console.log($.parseJSON(data));
然后我当然得到了想要的结果。
我只是挣扎着试图理解为什么当我使用$。get检索该字符串(带或不带对象周围的单引号),我要么得到一个错误,要么根本没有对象。