我已经让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')
你能解释为什么最后一段代码不起作用吗?
编辑:我拿出了一个不相关的例子
答案 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');