我使用.clone(true,true)复制HTML,因为我想保留JQuery事件处理程序。当我通过$ .post将它传递给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事件处理程序,因为我正在编写脚本来保存用户所处的状态。
更新(已添加代码)
//Save HTML w/ JQuery
GSaveState = new Object();
GSaveState['HTML'] = $('#content').clone(true, true);
$.post("DecoPOState.php", { SavedState: GSaveState},
function(data){
alert("Test");
}
);
答案 0 :(得分:3)
您的代码的问题在于您尝试发送DOM元素 - 由于显而易见的原因,您无法执行此操作。假设您要发送该元素的HTML代码,请使用$('#content').html()
var GSaveState = {
HTML: $('#content').html();
};
但是,事件处理程序不包含在该字符串中,因为它们附加到元素而不是内联事件(即它们不是出现在DOM树中的属性)。
保存应用程序的状态事件处理程序应该不重要。使用变量来保存要保存的状态信息,并将它们包含在POST数据中。