2012-06-04 115 views
1

我使用.clone複製HTML(true,true),因爲我想保留JQuery事件處理程序。當我通過$它傳遞給PHP。員額後失敗,讓我在Firebug以下錯誤

uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: jquery-1.7.2.js :: <TOP_LEVEL> :: line 7740" data: no] 

我想以某種方式讓HTML和JQuery的事件處理程序,因爲我在寫一個腳本來保存工作國家的用戶在

UPDATE(添加的代碼)

//Save HTML w/ JQuery 
GSaveState = new Object(); 
GSaveState['HTML'] = $('#content').clone(true, true); 

$.post("DecoPOState.php", { SavedState: GSaveState}, 
     function(data){ 
      alert("Test"); 
     } 
    ); 
+4

請提供您的實際代碼。 – Gabe

+0

好吧,我只是想保存響應克隆給我的MySQL後,我序列化()它 – Robert

+0

Fyi,'{}'是更好的方式來創建一個空的對象,而不是'新的對象()' – ThiefMaster

回答

3

與您的代碼的問題是,你試圖發送一個DOM元素 - 你不能這樣做,原因很明顯。假設你要發送該元素的HTML代碼,使用$('#content').html()

var GSaveState = { 
    HTML: $('#content').html(); 
}; 

然而,事件處理程序不包含在該字符串,因爲它們所連接的元素,而不是內聯事件(即它們不是屬性出現在DOM樹中)。

雖然保存應用程序的狀態事件處理程序不應該很重要。使用變量作爲要保存的狀態信息並將它們包含在POST數據中。

+0

好,那麼在那裏無論如何傳遞哪些元素具有JQuery事件處理程序?所以我可以重新初始化重新加載? – Robert

+0

您可以保存例如數組中這些元素的ID併發送該數組。 – ThiefMaster

+0

我知道我可以很容易地獲得ID和事件的類型,但是有沒有一種簡單的方法來獲得它們觸發的功能,並將其傳遞給我,還是我過度思考?我想使其儘可能動態 – Robert