JSONP回调-当使用jQuery调用时,数据到达时未被捕获
JSONP Callback - data arrives unescaped when using jQuery call
在我的客户端html/JS代码中,我从域中调用外部API来获取json数据。另一个API运行在一个单独的域中,所以基本上它不允许我使用常规的ajax/xhr请求。我们与API供应商商定的解决方案是他们支持jsonp。
因此,我发送了一个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,nlauth_email=yyyyy@pppp-zzzz.com, 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)
}
}
parse函数抛出了一个由未转义的字符(")引起的异常。出于某种原因,返回的数据似乎在到达回调函数之前就被取消了转义。因此,我无法解析数据,并面临一个问题。
最终我绕过了这个问题,实现了一个代理服务器来进行ajax调用(没有浏览器强制执行的CORS限制),而我的客户端调用就是针对这个代理的。
当然,在我的代理中,我实现了返回客户端域的Access Control Allow Origin标头,以便此调用正常工作。
相关文章:
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- 使用Jquery将Ajax jsonp数据转换为数组
- 在没有jsonp的情况下从另一个域获取数据(json格式)
- 如何使用jsonp调用返回的数据在Durandal中呈现视图
- 在带有数据的iframe中的JSONP中没有回调
- 使用IE、Jsonp和OpenID,我如何让数据发送服务器将客户端视为已验证
- 通过Yahoo API YQL- Javascript获取JSONP数据
- 从流星中的JSONP中提取数据
- 数据类型 jsonp 和 JSON 之间的区别
- 使用 ajax 将 Json/Jsonp 数据放入表单中
- 尝试使用 WOT API 从 JSON 或 JSONP 中提取数据
- 如何使用JSONP将数据从localhost发送到domain.com
- JSONP回调-当使用jQuery调用时,数据到达时未被捕获
- 如何使用ajax jsonp将数据从一个域获取到另一个域
- jQuery+JSONP返回空数据
- 从Angular Controller中的php文件获取JSONP数据
- jQuery JSONP发送数据参数中自动生成的回调名称
- 带有JSONP的jQuery.getJSON为不同的调用返回相同的数据
- 如何拉动&显示JSON/JSONP文件中的数据