$ .each迭代从jquery返回的json在firefox中失败

时间:2012-06-25 12:52:34

标签: jquery ajax json each

在chrome和safari中,以下代码可以正常工作。

firefox中,所有平台,所有版本,它都不起作用并抛出一个错误,即对象未定义(来自jQuery)停在$.each循环

此代码通过AJAX调用json Web服务并返回JSON。

想法?

CODE

 $.ajax({
    url: "URL GOES HERE",
    data: JSON.stringify({
        "geoNear": "geotestnew",
        "near": [-73.78086565, 41.014072],
        "maxDistance": 0.3
    }),
    type: "POST",
    crossDomain: true,
    contentType: "application/json",
    success: function(data) {
        var usthis = data.results;
        $.each(usthis, function(entryIndex, entry) {
            var newdis = this.dis * 69;
            $("#results").append('<br>');
            $("#results").append(newdis);
            $("#results").append('<br>');
            $("#results").append(this.obj.Name);
            $("#results").append('<br>');
        });
    },
    error: function(x, e) {
        $('body').html('error: ' + e);
    }
});
});​

2 个答案:

答案 0 :(得分:1)

你没有在ajax选项中设置dataType让jQuery知道期望的响应类型

   dataType:'json' // or 'jsonp' which it appears you may be using

http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:0)

我在这里看到了一些错误:

  1. 你没有dataType集。返回数据的格式是 由dataType属性确定。
  2. 您将crossDomain设置为true,但使用的是“json”的contentType而不是跨域请求所需的“jsonp”。
  3. 当使用json作为数据类型时,我总是在成功方法中使用data.d而不是data.results
  4. 这是我用于本地json ajax请求的代码:

        $.ajax({
            type: "POST",
            url: "/Svcs.asmx/GetStateProvOptions",
            dataType: "json",
            data: "{ 'countryID': '" + countryID + "' }",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                var result = data.d;
                var options = [];
                options.push('<option value="0" selected="selected">All</option>');
                for (var i = 0; i < result.length; i++) {
                    options.push('<option value="', result[i].ID, '">', result[i].Value, '</option>');
                }
                $('.ddl').html(options.join(''));
            },
            error: Ajax_Error
        });
    

    还可以查看$.ajax文档了解更多信息..

    这是关于data.d的解释: http://encosia.com/never-worry-about-asp-net-ajaxs-d-again/