我一直在尝试我之前在其他用户询问的堆栈溢出中看到的所有方法.但是没有一个正在工作.请希望你们中的任何一个能指出我正确的方向
$.ajax({ type: "get",dataType:'jsonp',params:jsonData,jsonp:false,jsonpCallback:"callbackfn",headers: { "api_key": "u5FocU4xLq2rBfZ1ZSV8o81R2usYzUEM3NaCinnV"},url: "http://localhost/url?name=xxx&[email protected]",success:function(){ alert("sucess function"); },error: function(jqXHR,textStatus,errorThrown){ alert(textStatus + " and<br> " + errorThrown); } }); function callbackfn(data) { alert(data); }
回复是{
“名字”:“约翰”,
“姓氏”:“李四”
}
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响应有关.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。