美元和美元之间的区别是什么?get和$. getjson

What is the difference between $.get and $.getJSON?

本文关键字:美元 get getjson 区别 之间 是什么      更新时间:2023-09-26

我想弄清楚$。$.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或其他转换机制混淆)。
许多服务器端框架(如Rails)自动检测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检索该字符串(带或不带对象周围的单引号),我要么得到一个错误,要么根本没有对象。