我正在与服务器通话,JSON响应如下所示:
someResponse({ "Response":{"status":"3","message":"Not valid bla bla"} });
正确的JSON应该是这样的,对吧?:
{
"response":
{
"status":"3",
"message":"Not valid bla bla"
}
}
如果用“someResponse”函数包含在内,有没有办法用jQuery以某种方式获取数据?
我的jQuery代码如下所示:
$.ajax({
url: "https://someurl/test/request.asp?user=x&pass=x",
dataType: "JSONP",
success: function(msg){
$("#json_here").html(msg.response.status);
},
error:function(x,e){alert(x+" :: "+e)}
});
当然,当我这样做时,没有任何反应。但如果我做$(“#json_here”)。html(msg);那么我就像上面那样得到完整的回应。
我做错了什么或者这是一种无效的发送JSON数据的方式?我没有得到解析错误。
提前致谢。
答案 0 :(得分:6)
服务器返回JSONP,而不是JSON。这样做是为了促进跨域请求(换句话说是ajax mashup)。
您需要做的就是实现一个名为someResponse的函数来解析答案并将加载的响应插入到您的页面中。然后,浏览器会自动调用您的someResponse。您还可以查看JSONP上的众多tutorials之一。
通常,返回JSONP的API允许客户端为应该使用加载的JSON调用的函数选择名称。因此,您可以根据需要重命名处理程序,只需告诉服务器即可。