JSONP仅使用命名回调函数

时间:2011-02-03 19:24:50

标签: javascript json jsonp

我已经让JSONP使用匿名函数但无法使用命名函数。此代码有效(警报显示正确的数据):

$.getJSON('http://example.com/test.aspx?foo=bar&callback=?',
    function (data) { alert(data.baz) })

但是,此代码无法正常工作(不显示警告):

function dat(data) {
     alert(data.baz)   
}

$.getJSON('http://example.com/test.aspx?foo=bar&callback=dat')

你能解释为什么最后一段代码不起作用吗?

编辑:我拿出了一个不相关的例子

3 个答案:

答案 0 :(得分:2)

我不确定忽略回调是否正确用法(或者,至少,我找不到任何文档来定义如果没有提供回调会发生什么)。如果您想使用命名函数作为回调,您可以这样做:

function dat(data) {
    alert(data.baz)   
}

$.getJSON('http://example.com/test.aspx?foo=bar&callback=?', dat);

答案 1 :(得分:0)

你应该能够用这样的东西中途遇到jQuery:

$.getJSON('http://example.com/test.aspx?foo=bar&callback=?', dat);

答案 2 :(得分:0)

稍微查看jquery的ajax代码之后,我想你要做的就是 像Dave Ward和Hamish建议,即传递功能。或者,我认为您可以将函数的名称作为这样的字符串传递,因为它附加到窗口并且jquery查看type of the callback for determining behavior

function dat(data) {
    alert(data.baz)   
}

$.getJSON('http://example.com/test.aspx?foo=bar&callback=?', 'dat');

或者,你可以使用getScript将url添加为脚本标记,这对你要做的事情很好。

function dat(data) {
    alert(data.baz)   
}

$.getScript('http://example.com/test.aspx?foo=bar&callback=dat');