JSONP函数调用问题

时间:2012-03-08 12:47:10

标签: javascript jquery jsonp

我建立了跨域的网络服务,需要通过json与padding联系 在像这样的简单jquery代码行上,我成功地获取了json数据。

$.getJSON("http://server/series/hist?jsonp=?", function(data){
 console.log(data);
});
只要网址中存在“jsonp”,web服务就会将结果包装在函数中。 对于那些情况,我使用了默认函数名称,如:

myfunction({"a":1})

jquery在这里帮助我,并试图调用函数,即不存在(“myfunction()”)。我试图实现的是对回调函数的简单调用(见上文),以便在本地处理数据。

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

谢谢

1 个答案:

答案 0 :(得分:3)

我不太确定你的问题究竟是什么,但是:

解释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})