Javascript如何区分Json对象和字符串?
当这个奇怪的javascript问题出现时,我正在阅读一个代码片段并弄清楚它是如何工作的 他们在javascript中调用Javascript如何区分Json对象和字符串?,javascript,json,jquery,Javascript,Json,Jquery,当这个奇怪的javascript问题出现时,我正在阅读一个代码片段并弄清楚它是如何工作的 他们在javascript中调用 var apiUrl = '/api/v1/pin/?format=json&order_by=-id&offset='+String(offset); ... $.get(apiUrl, function(pins) { for (...; i < pins.objects.length; i++) ... // works fine })
var apiUrl = '/api/v1/pin/?format=json&order_by=-id&offset='+String(offset);
...
$.get(apiUrl, function(pins) {
for (...; i < pins.objects.length; i++) ... // works fine
});
我试图模仿它,但$.get从未接受我的简化json字符串
// my attempt
$.get(myApiUrl, function(pins) {
for (...; i < pins.objects.length; i++) ... // ERROR: undefined length
});
在谷歌搜索$.getJson()命令之前,我无法让它工作。我只是想知道为什么他们的javascript代码只能使用$.get,而我的代码只能使用$.getJson
这是一种可以设置为强制javascript将其读取为json的头吗?如果不明确指定内容类型,jQuery将尝试根据服务器返回的头确定数据类型 若您并没有使用JSON序列化程序,那个么使用or验证JSON的有效性,否则您将得到一个错误
JSON的正确ContentType头是:
application/JSON
将HTTP响应头Content-Type
设置为application/JSON
例如:
在这两种情况下,AJAX调用都返回一个字符串
jQuery
必须以某种方式找出如何处理它。它如何做到这一点取决于数据类型
选项
文档调用默认值智能猜测
。那怎么猜呢?评估响应的内容类型
标题。如果是application/json
,那么jQuery
将尝试创建一个对象
为了确保
jQuery
始终尝试将响应解释为JSON
,您可以将dataType
设置为JSON响应类型应用程序/JSON。您的回答可能是正确的。设置正确的标题后,我的问题得到解决。
// my attempt
$.get(myApiUrl, function(pins) {
for (...; i < pins.objects.length; i++) ... // ERROR: undefined length
});
{"objects": [{...},{...}, ... ]}
HTTP/1.1 200 OK
Content-Type: application/json