JSONP函数调用问题

JSONP function call issue

本文关键字:问题 函数调用 JSONP      更新时间:2023-09-26

我建立了一个跨域的Web服务,需要通过带填充的json联系在这样一个简单的jquery代码行上,我成功地获取了json数据。

$.getJSON("http://server/series/hist?jsonp=?", function(data){
 console.log(data);
});

只要url中存在"jsonp",webservice就会将结果封装在一个函数中。对于这些情况,我使用了一个默认的函数名,比如:

myfunction({"a":1})

jquery在这里帮了我一把,并试图调用不存在的函数("myfunction()")。相反,我试图实现的是回调函数的简单调用(见上文),以在本地处理数据。

你能给我指正确的方向吗?

感谢

我不太确定你的问题到底是什么,但是:

解释1

假设"本地"的意思是"不使用回调":

这是不可能的。JSON-P不能同步工作,因为它依赖于<script>元素的添加(在当前函数完成执行之前不会处理)。

解释2

假设that isnt existing ("myfunction()")的意思是"您的Web服务始终使用函数名myfunction:

修复Web服务。jsonp=?的意思是"随机生成一个函数名,并将其作为jsonp参数传递

webservice必须使用该参数来确定所使用的函数名称,而不是使用固定值(如myfunction)。

解释3

您不想使用JSON-p作为输入,而是直接调用您的匿名函数。

你不能。它没有存储在任何你可以访问的地方。你必须重写你的代码,这样它就不会直接传递给getJSON:

function myFunction(data){
  console.log(data);
}
$.getJSON("http://server/series/hist?jsonp=?", myfunction); 
myfunction({"a":1})