2012-03-08 93 views
0

我设置了一个跨域的web服务,需要通过json与填充 联系,在这样一个简单的jQuery代码行上,我成功取回了json数据。JSONP函数调用问题

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

webservice会将结果封装在函数中,只要“url”中存在“jsonp”。 对于那些情况下,我使用默认的功能名称,如:

myfunction({"a":1}) 

jQuery的帮助我在这里,并改掉调用功能,即心不是现有的(“myfunction的()”)。我想实现的是一个简单的回调函数调用(参见上文),以在本地处理数据。

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

谢谢

回答

3

我不太清楚你的问题实际上是,但是:

解读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}) 
+0

深受当地我的意思上面我的代码的回调函数: 功能(数据){执行console.log(数据);} 因为它是在每个JSON示例中提到的 – zbug 2012-03-08 12:53:20

+0

我刚刚阅读了您的编辑Interpretation2。如果我理解你的话,jquery会随机为“?”生成一个名称。所以web服务必须抓住它并将其包装在json结果中才能使回调函数正常工作? – zbug 2012-03-08 12:57:30

+0

@zbug - 是的。你不能每次都使用同一个名字,你会遇到冲突。 – Quentin 2012-03-08 13:07:27