-1
在我的客戶端html/JS代碼中,我調用域內的外部API來獲取json數據。其他API運行在一個單獨的域中,所以基本上它不允許我使用常規的ajax/xhr請求。我們與API供應商達成一致的解決方案是他們支持jsonp。JSONP回調 - 使用jQuery調用時數據到達未轉義
所以我送JSONP請求如下:
$.ajax({
url: "https://rest.somevendor.com/app/site/hosting/restlet.nl?script=204&deploy=1&cid=436&callback=myCallBack",
dataType: 'jsonp',
type: 'GET',
jsonp: "callback",
contentType: "application/json; charset=utf-8",
processData: false,
headers: {
"Authorization": "NLAuth nlauth_account=xxxxxxx,[email protected], nlauth_signature=FGrmr5fjd"
},
success: function(data){
//console.log(data);
}
});
我的回調函數被調用使用JSON數據,但有一個問題。 當我從瀏覽器REST客戶端進行相同的調用時,我找回了一個有效的json,它被轉義了。然而,當我讓我的客戶代碼相同的呼叫,我找回數據,我的回調:
function myCallBack(data) {
jsonString="";
try{
jsonString=JSON.parse(data);
}catch(err) {
alert(err.message)
}
}
解析函數拋出來自非轉義字符(「)引起的異常出於某種原因。 ,似乎在返回到我的回調函數之前,返回的數據會被取消轉義,因此我無法解析數據,並且遇到問題。
爲什麼你有'contentType:「application/json; charset = utf-8」,'?這是一個GET請求。您沒有請求主體來描述內容類型!爲什麼你有'processData:false','?你沒有'data'參數來防止被處理! – Quentin 2014-11-04 16:41:23
完整回覆是什麼樣的? – Quentin 2014-11-04 16:42:14
爲什麼你有'標題:{Authorization}:「NLAuth nlauth_account = xxxxxxx,nlauth_email = yyyyy @ pppp-zzzz.com,nlauth_signature = FGrmr5fjd」 },'?您已經使用JSONP,您無法設置自定義HTTP標頭。 – Quentin 2014-11-04 16:42:35