-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