为什么是“jQuery.parseJSON”?没有必要吗?
我正在使用查询执行 ajax 请求,并想知道为什么我的响应已经是一个 JS 对象。
如果我执行
var obj = jQuery.parseJSON(response);
“obj”为空,但我可以使用“response”作为 js 对象数组。
这并不是一个真正的问题,但我想理解这种行为。
谢谢
i'm doing an ajax request with query and wondering why my response is already a JS object.
If i do a
var obj = jQuery.parseJSON(response);
'obj' is null, but i can use 'response' as an array of js objects.
This is not really a problem, but i would like to understand this behavior.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
当您进行 AJAX 调用并指定数据类型 JSON 时,就会发生这种情况 jQuery 在响应上调用 jQuery.parseJSON。事实上,您可以根据数据类型指定要调用的函数,正如您可以从 文档 中看到的那样
所以如果你进行这样的调用
如果你没有指定 dataType jQuery 会尝试猜测它
This happens when you make an AJAX call and specify the dataType JSON jQuery calls jQuery.parseJSON on the response for you. In fact you can specify what function to call depending on the dataType as you can se from the documentation
So if you make a call like this
If you don't specify a dataType jQuery tries to guess it
这很大程度上取决于您传递到 jQuery ajax 请求中的
dataType
。这可能通过调用.getJSON()
或直接使用$.ajax()
隐式发生。但是,如果您省略
dataType
,jQuery 会尝试执行一些魔法并猜测收到了哪些数据。对于 JSON 数据,它使用一个简单的正则表达式来检查响应是否看起来像 JSON 字符串,如果是,它会自动为您解析它。jQuery 将尝试根据响应的 MIME 类型来推断它。
因此,请始终保持精确并告诉 jQuery 您期望哪种类型的数据。
It pretty much depends which
dataType
you pass into your jQuery ajax request. This might happen implict by calling.getJSON()
or directly using$.ajax()
.However, if you omit the
dataType
, jQuery trys to do some magic and guesses which data was received.As for JSON data, it uses a simple regular expression to check if a response looks like a JSON-string and if so, it automatically parses it for you.jQuery will try to infer it based on the MIME type of the response.
So always be precise and tell jQuery which type of data you expect.
jQuery 的 ajax 方法的默认行为是分析响应并将其作为最合适的数据类型返回。因此,如果您的响应看起来像 JSON,它将被转换为 JavaScript 对象/数组。
您可以通过在 ajax 设置中设置
dataType
属性来覆盖此行为。The default behaviour of jQuery's ajax method is to analyse the response and return it as the most appropriate data type. If your response looks like JSON, therefore, it will be converted to a JavaScript object/array.
You can override this behaviour by setting the
dataType
attribute in the ajax settings.如果您将
dataType
指定为json
,jquery 会为您解析响应,就像jQuery.getJSON()
这是
getJSON
的源代码,如下所示https://github.com/jquery/jquery/blob/master/src /ajax.js#L283
if you specify the
dataType
asjson
the jquery parses the response for you likesame is the case with jQuery.getJSON()
this is how the source code for
getJSON
looks likehttps://github.com/jquery/jquery/blob/master/src/ajax.js#L283
因为
I.E 它会在每次自动检测到 json 响应或由您自己显式设置时运行该函数
Because
I.E it will run the function everytime json response is detected automatically or explicitly set by yourself