在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);
}
});
});
答案 0 :(得分:1)
你没有在ajax选项中设置dataType
让jQuery知道期望的响应类型
dataType:'json' // or 'jsonp' which it appears you may be using
答案 1 :(得分:0)
我在这里看到了一些错误:
data.d
而不是data.results
这是我用于本地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/