JQuery .get()检索JSON响应 - 成功回调不触发

时间:2013-11-20 04:45:30

标签: jquery httphandler ashx jquery-callback

我正在执行以下操作 - 它是一个JQuery .get(),它调用一个应该返回JSON对象的http处理程序。在.get()的回调函数(即.get()函数中传递的第三个参数)中,当收到成功的http响应时调用该函数,然后将该对象的纬度和经度属性分配给一对其他属性

    var url = "/handlers/GeolocationByIpAddress.ashx";
    $.get(url, {}, function (data) {
        g.currentLat = data.Latitude;
        g.currentLng = data.Longitude;
    });

当我在线上设置断点时:

        g.currentLat = data.Latitude;

它没有被击中,这表明成功回调没有触发。我已经在Firebug的“NET”选项卡中检查了对.ashx处理程序的请求,并且它显示了一个成功的JSON响应,其中包含正确形成的JSON对象,并且正确设置了“纬度”和“经度”属性。我尝试以不同的方式组织上面的代码,以便回调调用另一个函数并将'data'传递给它,而不是自我调用。永远不会调用单独的函数,这似乎证实.get()只是没有识别成功的响应。当我在Firebug的“NET”选项卡中看到成功的响应时,为什么会发生这种情况?

3 个答案:

答案 0 :(得分:2)

JSON作为第四个参数添加到.get()函数中,如:

$.get( "test.php", {}, function( data ) {
    console.log(data);// Check webconsole what you get in data        
}, "json" );

答案 1 :(得分:1)

我敢打赌,我知道!将“data”转储到控制台,并将“console.log(data)”作为回调函数中的第一行。你看到的可能会将你的返回数据隐藏在包装器对象中。例如,您可能必须查看data.data.Latitude或类似内容以获取从服务器上的函数发送的数据。

答案 2 :(得分:1)

您是否尝试过使用'$ .getJSON()?

$.getJSON(url, function (data) {
    g.currentLat = data.Latitude;
    g.currentLng = data.Longitude;
});

您是否测试过它是否会触发错误?试着听'.fail();

似乎'$ .get()'应该能够自动处理JSON,也许尝试告诉它你接收JSON。 (您的回复标题可能有误)

$.get(url, {}, function (data) {
    g.currentLat = data.Latitude;
    g.currentLng = data.Longitude;
}, "json");