1

插入脚本 ajax 响应不起作用

在 php 上,我有一个数组,它有 2 个部分,如下所示

array('threeRowHtml'=> '<HTML output string>',
'jsCode'=> '<script output string>'
)

我为我的 ajax 调用返回该数组。我解析了响应,我可以取其中两个字符串。我想将它们插入我的页面并 eval 以执行返回 js 脚本。我可以插入“threeRowsHtml”OK,但使用“jsCode”不起作用。

$.ajax({
            url: postUrl,
            type: "post",
            beforeSend:function(){
                process.show(); // just my popup
            },
            success: function(data){
                data = $.parseJSON(data);

                if(data.returnCode == 1){
                    //var jsCode = eval("(" + data.jsCode + ')');
                    console.log(data.jsCode); // print out OK
                    $('#rp_script').replaceWith(data.jsCode); // did not work
                    $('#rp_content').replaceWith(data.threeRowsHtml); // insert into page OK

                }
                else{
                    $('#rp_errors').replaceWith(data.errorHtml);
                }

                process.hide();
            }
        }) 

这是插入响应的位置

<div id="rp_content">

</div>

<div id="rp_actions">

</div>

<div id="rp_script">

</div>
<div id="rp_errors"></div>

返回脚本字符串的语法很好,因为如果它是错误的,它会注意到我的 JS 错误标记。结果总是“jsCode”的空字符串,我不知道它有什么问题。任何帮助表示赞赏!

4

3 回答 3

1

AFAIK,js 代码被处理然后从 XHR 响应中剥离,您可以通过debugger;在开始脚本标记正下方添加一行来测试您的 JS 代码是否正在被解释。打开您的代码检查器/开发工具/无论它是否在您的显式断点处停止。

请参阅此内容以供参考。它可能与jQuery 相关 - HTML 中的脚本标签被 jQuery 解析出来而不被执行

于 2013-07-30T04:56:33.303 回答
0

我发现了问题所在。 jquery html() 去掉脚本标签

现在我可以将脚本打印到我的页面中

$('#rp_script')[0].innerHTML = data.jsCode;

当然,我仍然使用 global.eval 来执行我的脚本。

于 2013-07-30T05:26:59.413 回答
0

不喜欢响应被正确转义。字符串中有未转义的 "。

于 2013-07-30T05:13:14.367 回答