Jquery .clone()导致$ .post失败

时间:2012-06-04 20:19:36

标签: php javascript jquery

我使用.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");
        }
    );

1 个答案:

答案 0 :(得分:3)

您的代码的问题在于您尝试发送DOM元素 - 由于显而易见的原因,您无法执行此操作。假设您要发送该元素的HTML代码,请使用$('#content').html()

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

但是,事件处理程序不包含在该字符串中,因为它们附加到元素而不是内联事件(即它们不是出现在DOM树中的属性)。

保存应用程序的状态事件处理程序应该不重要。使用变量来保存要保存的状态信息,并将它们包含在POST数据中。

相关问题