2010-01-27 75 views
1

我使用JQuery對話框,並從PHP我可以建立一些加載項的按鈕。爲了能夠從服務器端添加代碼,我按參數傳遞了一個方法。問題是,螢火告訴我,該方法沒有定義:將函數傳入參數?

alt text http://clip2net.com/clip/m12122/1264557672-clip-8kb.png

okHandler是這個方法調用的參數,以提高該對話框,它包含一個簡單的警報消息的那一刻,後來一些Ajax調用。任何想法爲什麼它不起作用?

alt text http://clip2net.com/clip/m12122/1264557824-clip-6kb.png

+1

你能否提供一些更多的背景? okHandler在何處定義? – Joel 2010-01-27 02:07:45

回答

4

看起來okHandler是包含函數的聲明,並沒有實際功能的字符串?你有

okHandler = "function anonymous(){alert('This is a test');}"; 

,而不是

okHandler = function(){alert('This is a test');}; 
0

As John Kugelman notesokHandler似乎是一個字符串。這將更好地工作,如果它是一個功能......然而,如果一個字符串它必須是,那麼你就需要通過eval()將它傳遞給實際執行它:

eval("(" + okHandler + ")()") 
+0

+1它與eval一起工作,但實際上我是從服務器端傳遞字符串到客戶端。我給你+1,但會接受約翰的答案。感謝Shog9 – 2010-01-28 00:20:55

0

是在okHandler()函數加載(作爲一個有效的JS對象 - 不是一個字符串)當你得到那個錯誤?

我相信,如果foo還沒有被聲明爲某個變量,那麼調用類似「if(foo!= null)」的東西是不正確的。 FireBug會抱怨:「okHandler沒有定義。」

嘗試這樣的事情...

var myHandlers = {}; 
// Load okHandler as a member of myHandlers when applicable here... 
$('#dialog'+idbox)... 
    "Oky": function() { 
     myHandlers.okHandler && myHandlers.okHandler(); 
     ... 
    } 
}