我正在执行以下操作 - 它是一个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”选项卡中看到成功的响应时,为什么会发生这种情况?
答案 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");