我有一个小脚本,它从服务器获取一些JSONP数据。我想访问该响应数据中的各种值。我不知道怎么做。
看完一些文章后,我感到困惑。我从这个网站上读到JSON.stringify()
将创建JSON。所以在我的情况下,这意味着服务器没有返回JSON?
因为如果我做data= JSON.parse(response);
,alert()
就不起作用。此外,如果我将dataType
更改为json,我会从服务器收到一些身份验证错误。在所有这些之后,我终于想出了如何提醒服务器的响应。
jQuery代码:
getData = function(){
var urlink = "https://192.168.150.3/loc/102?jsonpCallback=myCallback";
$.ajax({
type: "GET",
url: urlink,
dataType:"jsonp",
async: false,
});
}
myCallback = function(response){
data= JSON.stringify(response);
alert(data);
}
由于警报,我从上面的脚本中得到的输出如下:
{
"request":"/loc/102?jsonpCallback=myCallback&callback=jQuery21106404822329059243_1410515165630&_=1410515165633",
"response":
{
"id":102,
"name":"Location 1",
"child":[
"/child/CSJ01",
"/child/CSJ02",
],
"stats":{
"pow":{
"instant":8.39
},
"cTemp":{
"instant":22.76
},
"rTemp":{
},
"b":{
"instant":1
},
"m":{
"instant":1410513940
}
}
}
}
问题:如何访问id
、name
、child
的值,pow
中instant
的值,以及cTemp
中instant
的值等?
我已经找到了一些关于如何在JSON中获取这些值的解决方案,但它们对我不起作用。例如:这个例子。在大多数例子中,他们首先使用JSON.parse()
,然后获得特定的值,但在我的例子中,JSON.parse()
什么都不做,所以这些例子没有太大帮助,或者我可能非常困惑和迷失。如有任何建议,我们将不胜感激。
JSONP方法不是真正的ajax,因此不能设置withCredentials
和自定义头。事实上,它创建了一个带有响应的script
元素来处理CORS(因此,如果没有目标明确授权,你就不能向网站中的其他网站提出请求)
JSON请求将创建如下脚本:
<script src="https://192.168.150.3/loc/102?jsonpCallback=myCallback">
</script>
然后返回的数据将是:
myCallback({...});
取而代之的是:
{...}
因此,您可以设置自定义标头。
现在,如果您想要凭证和标头,只需使用json
,但您的服务器必须正确处理CORS。
您的两次回调之间存在问题。您定义了一个,jquery定义了另一个(b/c jquery附加callback
查询),因此新创建的script
标记将只调用一个方法,从而success
回调OR myCallback
,但不能同时调用这两个所以试试这个:
getData = function(){
var urlink = "https://192.168.150.3/loc/102";
$.ajax({
type: "GET",
url: urlink,
dataType:"jsonp",
async: false,
success: function(data) {
data = JSON.stringify(response);
alert(data);
}
});
}