2014-09-29 96 views
1

我正在使用一些遊戲api,它根據請求返回json格式的數據。jQuery ajax禁用解析

問題是,API是在不同的域名,所以我不允許使用dataType:「JSON」,因爲跨域策略(錯誤:沒有'訪問控制允許來源'標題出現在請求資源)。所以我嘗試使用jsonp代替。當我使用jsonp時,jQuery拋出parseError,因爲來自服務器的數據是json而不是jsonp。

我已經嘗試jsonpCallback和這種類型的一切 - 服務器仍然返回json。

我也試過使用xhr.responseText,但是是空的。有沒有辦法告訴jQuery不要解析數據 - 我可以手動解析字符串,只需要在jsonp上設置數據類型以便服務器正確響應。

而數據是從服務器返回的。我知道它不是空的,我可以在Chrome中使用開發人員工具檢查它。

我的代碼:

$.ajax({ 
    url: "http://eu.battle.net/api/wow/character/turalyon/Blargh", 
    type: "get", 
    data: { fields: "quests" }, 
    dataType: "json", 
    success: function(data, textStatus, jqXHR){ 
     if(typeof func === "function"){ 
      func(data); 
     } 
    }, 
    error: function(jqXHR, textStatus, errorThrown){ 
     contentField.html(textStatus); 
    } 
}); 

回答

1

jQuery是不是分析數據。 JSONP通過將數據編碼爲腳本中函數調用的參數進行編碼,該腳本僅包含該函數調用,然後通過向文檔添加腳本元素來加載它。

JavaScript引擎正在嘗試執行JavaScript。

您不能通過嘗試將其加載爲JSONP來訪問任意數據。您請求的網站必須以JSONP格式提供。其他任何事情都會使相同的原產地政策毫無意義。

+0

有關其他信息:[Wikipedia上的JSONP](http://en.wikipedia.org/wiki/JSONP) – Jeach 2015-03-31 08:27:05