Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript如何区分Json对象和字符串?_Javascript_Json_Jquery - Fatal编程技术网

Javascript如何区分Json对象和字符串?

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 })

当这个奇怪的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
});
我试图模仿它,但$.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