0

如何使用 jquery 从 ajax 响应中提取 Javascript 代码块?除了其他标签(在本例中为 div 标签)之外,不执行或评估 javascript 代码,

在 get_js.html

<script> 
    $(function(){
       $.get('src.php',function(Source) {
         // In Here I want to get Javscript Code Block from string(Source)
         // Only javascript code block, not other tags
         var Code = GET_SCRIPT(Source);
         $('#code_block').val(Code);
    });
</script>
<textarea id="code_block">
</textarea>

在 src.php 中

echo '<script>alert("this is script code, which is not to be excuted")</script><div>Blah..Blah..</div>';
4

2 回答 2

1

您可以通过简单的字符串拆分来做到这一点:

var str = "<script>alert('this is script code, which is not to be excuted')</script><div>Blah";
var script = str.substring(str.indexOf('<script>')+8, str.lastIndexOf("</script>"));
console.log(script);

上面的代码给出:

alert('this is script code, which is not to be excuted')

当您的响应中有多个脚本时,就会出现问题。但是您可以类似地处理

于 2013-07-16T05:30:30.870 回答
0

你可以尝试这样的事情:

<textarea id="code_block"></textarea>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script>
    $.ajax('src.php').success(function(resp) {
        var $container = $('<div />'), // container element for freeform response block
            $script, script;
        $container.append(resp); // add the response content to the container so you can search it

        $script = $container.find('script'); // Locate the script block
        script = $script.html(); // Get the text only

        $('#code_block').val(script);
    });
</script>

我分解了代码,以便解释每个步骤;它可以更简洁。请注意,这仅适用于单个脚本块。如果有很多你需要做一些循环而不是仅仅调用 $script.text()。

于 2013-07-16T05:55:27.410 回答