【问题标题】:JQuery .get() to retrieve JSON response - success callback not triggeringJQuery .get() 检索 JSON 响应 - 未触发成功回调
【发布时间】:2013-11-20 04:45:29
【问题描述】:

我正在执行以下操作 - 这是一个 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 对象,并且“纬度”和“经度”属性设置正确。我尝试以不同的方式组织上述代码,以便回调调用另一个函数并将“数据”传递给它,而不是自调用。永远不会调用单独的函数,这似乎证实 .get() 只是没有识别成功的响应。当我在 Firebug 的“NET”选项卡中看到成功响应时,为什么会发生这种情况?

【问题讨论】:

标签: jquery httphandler ashx jquery-callback


【解决方案1】:

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

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

【讨论】:

  • 感谢 Kishor,我仍然得到相同的结果,尽管现在控制台中记录了以下内容:Object { RegionCode="G2", CountryId=29, CountryName="New Zealand", more.. .} - 纬度和经度在那里,这对我来说看起来是正确的......
  • 现在可以访问 lat 和 long 了吗?
  • 嗨,Kishor。谢谢,虽然没有,不幸的是这没有用。赞成这个建议:)
【解决方案2】:

您是否尝试过使用 '$.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");

【讨论】:

  • 遗憾的是,我还不能对其他答案发表评论,但我想提供帮助…… John Munsch:你确定它格式错误,或者你知道那是什么格式吗?我很惊讶它实际上创建了一个像这样格式化的对象。 Chris Halcrow:你用什么浏览器调试?您的 JSON 在 Firebug 中的外观如何?
  • 您好。感谢负载的响应。我在 Firefox 上使用 Firebug,当我将 JSON 输出到 Firebug 控制台时,它的格式如下 - Object { RegionCode="G2", CountryId=29, CountryName="New Zealand", more...} -经纬度都有
  • 非常感谢,现在正在使用您建议的代码 :)
【解决方案3】:

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

【讨论】:

  • 谢谢约翰,我已经尝试过了,并记录了以下内容:Object { RegionCode="G2", CountryId=29, CountryName="New Zealand", more...} - 纬度和经度在那里,这对我来说看起来是正确的......
  • 如果它真的看起来像那样,我觉得它看起来不正确。在我们没有将真正的 JSON 对象返回给客户端之前,我已经看到了与 Java 类似的问题。在 JSON 中,它看起来像 { "RegionCode" : "G2", "CountryId" : 29, "CountryName" : "NewZealand"... }
  • 谢谢约翰。我不认为它格式错误,我认为 Firefox 上的 Firebug 只是在控制台中格式化 JSON。还有其他想法吗?
猜你喜欢
  • 2011-02-22
  • 2012-05-04
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 2014-12-22
  • 1970-01-01
相关资源
最近更新 更多