我一直在尝试我之前在其他用户询问的堆栈溢出中看到的所有方法.但是没有一个正在工作.请希望你们中的任何一个能指出我正确的方向
$.ajax({
type: "get",
dataType:'jsonp',
params:jsonData,
jsonp:false,
jsonpCallback:"callbackfn",
headers: { "api_key": "u5FocU4xLq2rBfZ1ZSV8o81R2usYzUEM3NaCinnV"},
url: "http://localhost/url?name=xxx&email=xxxxxx@gmail.com",
success:function(){
alert("sucess function");
},
error: function(jqXHR, textStatus, errorThrown){
alert(textStatus + " and<br> " + errorThrown);
}
});
function callbackfn(data) {
alert(data);
}
回复是{
“名字”:“约翰”,
“姓氏”:“李四”
}
虽然响应是json,但这会增加错误
Parse error .callbackfn not called.
最佳答案 为了使用JSONP的自定义回调函数,您必须将其范围声明为全局,即
window.callbackfn = function(data) {
alert(data);
};
为什么?
这是因为成功的JSONP响应返回一个新的JavaScript文件,即封装在< script>中的JavaScript函数调用.标签.由于每个脚本都在全局范围内独立评估,因此您希望另一个脚本可用的任何脚本函数也必须在全局范围内声明.因此,所有JSONP回调函数都应该是全局的.
编辑
根据OP,解决方案在这里找到:Return JSONP via AWS Lambda/API Gateway做了伎俩.问题与不正确的服务器端JSONP响应有关.