返回的JSON是函数调用的结构。无法弄清楚如何用jQuery解析

时间:2010-08-30 15:58:42

标签: jquery ajax json parsing

我正在与服务器通话,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数据的方式?我没有得到解析错误。

提前致谢。

1 个答案:

答案 0 :(得分:6)

服务器返回JSONP,而不是JSON。这样做是为了促进跨域请求(换句话说是ajax mashup)。

您需要做的就是实现一个名为someResponse的函数来解析答案并将加载的响应插入到您的页面中。然后,浏览器会自动调用您的someResponse。您还可以查看JSONP上的众多tutorials之一。

通常,返回JSONP的API允许客户端为应该使用加载的JSON调用的函数选择名称。因此,您可以根据需要重命名处理程序,只需告诉服务器即可。