Php Jquery.clone()导致$.post失败
我使用.clone(true,true)复制HTML,因为我想保留JQuery事件处理程序。当我通过$.post将其传递给PHP时,post失败,并在firebug中给出以下错误Php Jquery.clone()导致$.post失败,php,javascript,jquery,Php,Javascript,Jquery,我使用.clone(true,true)复制HTML,因为我想保留JQuery事件处理程序。当我通过$.post将其传递给PHP时,post失败,并在firebug中给出以下错误 uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: jquery-1.7
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]
代码的问题是您试图发送一个DOM元素——由于明显的原因,您无法这样做。假设要发送该元素的HTML代码,请使用
$('#content').HTML()
但是,该字符串中不包含事件处理程序,因为它们附加到元素而不是内联事件(即,它们不是DOM树中显示的属性)
不过,保存应用程序的状态事件处理程序并不重要。使用变量作为要保存的状态信息,并将其包含在POST数据中。我刚打算在我序列化()itFyi之后将克隆给我的响应保存到mySQL中,{}
是创建空对象而不是新对象()的更好方法
好的,那么是否仍要传递哪些元素具有JQuery事件处理程序?因此,我可以在重新加载时重新初始化?您可以将这些元素的ID保存在一个数组中并发送该数组。我知道我可以很容易地获取ID以及什么类型的事件,但是是否有一种简单的方法来获取它们触发的函数并传递它,或者我是否考虑过了?我希望尽可能使其动态化您根本不想将这样的内部详细信息发送到您的服务器。该函数很可能不是动态生成的JavaScript代码,是吗?我只是认为有一种简单的方法可以重新安装JQuery处理程序,这样我就可以在其他形式中使用该代码,而无需在加载保存html时实际进入并硬编码JQuery事件
//Save HTML w/ JQuery
GSaveState = new Object();
GSaveState['HTML'] = $('#content').clone(true, true);
$.post("DecoPOState.php", { SavedState: GSaveState},
function(data){
alert("Test");
}
);
var GSaveState = {
HTML: $('#content').html();
};