簡體   English   中英

JSONP僅使用命名回調函數

[英]JSONP only working with named callback function

我已經使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')

你能解釋為什么最后一個代碼不起作用嗎?

編輯:我拿出一個不相關的示例

我不確定忽略回調是正確的用法(或者,至少,我找不到任何文檔來定義如果沒有提供回調會發生什么)。 如果要將命名函數用作回調,則可以執行以下操作:

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

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

您應該能夠通過類似以下方式遇到jQuery:

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

在看了一下jquery的ajax代碼后,我認為您想要做的就是像Dave Ward和Hamish建議的那樣,即傳遞函數。 或者,我認為您可以將函數名稱作為這樣的字符串傳遞,因為它附加在窗口上,並且jquery會查看用於確定行為的回調類型

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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM