我想弄清楚$ .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 '
如你所见,我完全糊涂了。
答案 0 :(得分:2)
如果$.getJSON
Accept: application/json
标题许多服务器端框架(例如Rails)会自动检测Accept
标头并适当地处理请求。如果您使用的是其他框架或自行编辑,则可以检查Accept
标头以检测格式。
答案 1 :(得分:0)
您收到语法错误的原因是因为输入是:
"'{ \"name\": \"John\" }'"
如果没有额外的单引号, $.parseJSON
应该可以正常工作。你确定你第一次尝试时没有输入错字号吗?
答案 2 :(得分:0)
我删除了单引号,因此Test.js只是
{ "name": "John" }
当我尝试
时$.get('Test.js', function(data) {
console.log($parseJSON(data));
});
控制台中根本没有任何内容。
如果我这样做
var data = '{"name":"John"}'
console.log($.parseJSON(data));
然后我得到了理想的结果。
我正在努力尝试理解为什么当我使用$ .get来检索该字符串时(有或没有围绕对象的单引号),我得到一个错误,或者根本没有对象。