【问题标题】:Callback - Parseerror JSONP via jQuery AJAX回调 - 通过 jQuery AJAX 解析错误 JSONP
【发布时间】:2012-07-31 22:44:25
【问题描述】:

请考虑以下代码sn-p:

$(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

请帮助我诊断我缺少什么 - 谢谢!

【问题讨论】:

标签: javascript jquery ajax callback jsonp


【解决方案1】:
var data = $.parseJSON(data);

由于您正在执行 JSONP 请求,您将获得一个传递给回调函数的对象字面量。你不能在上面使用parseJSON。无论如何,jQuery 是智能的,如果内容类型已知,它总是会为您解析。

不确定这是否会触发错误消息,但对于问题jQuery JSON response always triggers a ParseError 这是解决方案。


好的,that 很简单。看看script it loads:那不是valid JSONP——它错过了回调padding。另外,mime-type 是错误的:对于 JSONP 脚本,它应该是 text/javascript or application/javascript,对于他们提供的 JSON,它应该是 application/json

jQuery 确实检测到“脚本”的负载,但由于没有执行任何操作,它会抛出“尽管文件已成功加载,但未调用给定回调”的错误 - 怀疑是 parseerror。

您确定网络服务完全支持 JSONP 吗?

【讨论】:

  • 是的,抱歉,这是上一期留下的。我已删除,但仍然收到相同的错误。这是我使用 jsFiddle jsfiddle.net/ALeez/2
  • Bergi 是对的,mosaicco.force.com/siteforce/… 不会产生有效的 JSONP;它应该看起来像包装在函数调用中的 json 数据。如果它们确实支持 JSONP,则回调的查询字符串参数可能不同。
  • 支持 JSON - 将其标记为解决方案,因为这是一个调整回调的问题。
猜你喜欢
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多