2012-06-04 120 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