2012-08-02 85 views
1

請考慮下面的代碼片段:回調 - Parseerror JSONP通過jQuery AJAX

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

[jQuery JSON響應總是觸發一個ParseError]的可能重複(http://stackoverflow.com/questions/5095307/jquery-json-response-always-triggers-a-parseerror) – Bergi 2012-08-03 15:08:10

回答

4
var data = $.parseJSON(data); 

既然你正在做一個JSONP請求,你將得到一個傳入回調函數的對象字面值。你不能使用parseJSON。無論如何,如果內容類型是已知的,jQuery是智能的,並且總是爲你解析。

不確定是否會觸發錯誤消息,但是問題jQuery JSON response always triggers a ParseError這是解決方案。


行,that的簡單。看看script it loads:那不是valid JSONP - 它錯過了回調填充。另外,mime類型是錯誤的:對於JSONP腳本,它應該是​​3210,因爲它們提供的JSON應該是application/json

jQuery確實檢測到「腳本」的負載,但由於沒有執行任何操作,它會拋出一個錯誤,即「給定的回調未被調用,但文件已成功加載」 - parseerror懷疑。

你確定webservice完全支持JSONP嗎?

+0

是的,對不起,這是遺留的從以前的問題。我已刪除並仍然收到相同的錯誤。這裏是我用jsFiddle http://jsfiddle.net/ALeez/2/ – McKev 2012-08-03 15:18:01

+0

Bergi是對的,http://mosaicco.force.com/siteforce/activeretailaccounts?callback=jQuery17204995805434882641_1344010639385&_=1344010639389 不會產生有效的JSONP;它應該看起來像包裝在函數調用中的json數據。如果他們確實支持JSONP,那麼回調的查詢字符串參數可能不同。 – JayC 2012-08-03 16:20:24

+0

支持JSON - 將此標記爲解決方案,因爲它是根據指示調整回調的問題。 – McKev 2012-10-26 16:42:59