请考虑以下代码段:
$(function () {
$.ajax({
type: "GET",
url: "http://mosaicco.force.com/siteforce/activeretailaccounts",
dataType: "jsonp",
crossDomain: true,
jsonp: "callback",
error: function(jqXHR, textStatus, errorThrown) {
alert('Error Message: '+textStatus);
alert('HTTP Error: '+errorThrown);
},
success: function (data) {
var i = 0;
//Process JSON
$.each(data, function () {
var name = this.locname;
var lat = this.lat;
var lng = this.lng;
var address = this.address;
var address2 = this.address2;
var city = this.city;
var state = this.state;
var postal = this.postal;
var phone = this.phone;
var web = this.web;
web = web.replace("http://", "");
var distance = GeoCodeCalc.CalcDistance(orig_lat, orig_lng, lat, lng, GeoCodeCalc.EarthRadiusInMiles);
//Create the array
locationset[i] = new Array(distance, name, lat, lng, address, address2, city, state, postal, phone, web);
i++;
});
}
});
});
我正在拉JSON跨域,并且由于某种原因我不断返回一个parseerror:
HTTP Error:Error: jQuery17209875996995251626_1343943259805 was not called
我能够在页面上看到数据很好 - 回调看起来像这样:
callback:jQuery17209875996995251626_1343943259805_:1343943260015
请帮我诊断我错过的东西 - 谢谢!
答案 0 :(得分:4)
var data = $.parseJSON(data);
由于您正在执行JSONP请求,因此您将获得一个传递给回调函数的对象文字。您无法使用parseJSON
。无论如何,jQuery是智能的,如果已知内容类型,它总是为你解析。
不确定是否会触发错误消息,但问题jQuery JSON response always triggers a ParseError这是解决方案。
好的,that很简单。查看script it loads:这不是valid JSONP - 它错过了回调填充。此外,mime类型是错误的:对于JSONP脚本,它应该是text/javascript
or application/javascript
,对于他们提供的JSON,它应该是application/json
。
jQuery确实检测到“脚本”的负载,但是由于没有执行任何操作,它会抛出错误“尽管文件已成功加载但未调用给定的回调” - 怀疑是parseerror。
你确定web服务完全支持JSONP吗?