我设置了一个跨域的 Web 服务,需要通过带有 padding 的 json 进行联系 在像这样的简单 jquery 代码线上,我成功取回了 json 数据。
$.getJSON("http://server/series/hist?jsonp=?", function(data){
console.log(data);
});
只要 url 中存在“jsonp”,Web 服务就会将结果包装在函数中。 对于这些情况,我使用了默认函数名称,例如:
myfunction({"a":1})
jquery 在这里帮助我,并尝试调用不存在的函数(“myfunction()”)。我想要实现的是简单地调用回调函数(见上文),以在本地处理数据。
你能指出我正确的方向吗?
谢谢
最佳答案
我不太确定你的问题到底是什么,但是:
解释 1
假设“本地”是指“不使用回调”:
那是不可能的。 JSON-P 无法同步工作,因为它依赖于添加 <script>
元素(在当前函数执行完成之前不会被处理)。
解释2
假设 that isnt existing ("myfunction()")
你的意思是“你的网络服务总是使用函数名称myfunction
:
修复网络服务。 jsonp=?
意思是“随机生成一个函数名并将其作为 jsonp
参数传递。
Web 服务必须使用该参数来确定所使用的函数名称,而不是使用固定值,例如 myfunction
.
解释3
您不想使用 JSON-P 作为输入,而是直接调用匿名函数。
你不能。它不会存储在您可以访问的任何地方。您必须重写代码,以便它不会直接传递到 getJSON
:
function myFunction(data){
console.log(data);
}
$.getJSON("http://server/series/hist?jsonp=?", myfunction);
myfunction({"a":1})
关于javascript - JSONP函数调用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617886/