从ajax响应中删除脚本标记和css链接,删除其他数据

时间:2017-08-02 11:53:07

标签: javascript php jquery json ajax

我试图从ajax响应中删除<script>标记。我从服务器返回一个json编码的数组。但它也包含一些<script>标签(来自我的应用程序。无法从服务器端删除它)。

$.ajax({
        url: 'test.php',
        type: 'POST',
        data: {},
        dataType: 'html',
        success: function(data) {
            console.log("text : "+$(data).find("script,style").remove().end().text());
         }
});

我尝试了上面的代码。它正在删除标签。但是我的json编码数组中最后一项的一部分也被删除了。

test.php中的字符串看起来像

<script src='//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js' type='text/javascript'></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
["Ball > Backs > Flags","Baseball > Backs > 3X5 Flags","Baseball > Backs > Action"] // like this it contains about 50 items.

$(data).find("script,style").remove().end().text()将json字符串作为["Ball > Backs > Flags","Baseball > Backs > 3X5 Flags","Baseball > Backs >返回。

我做错了什么?任何人都可以帮我解决这个问题。

提前致谢。

3 个答案:

答案 0 :(得分:0)

你在ajax函数中犯了一个错误。试试这个:

$.ajax({
    url: 'test.php',
    method: 'POST',
    data: {},
    dataType: 'json',
    success: function(data) {
        console.log(data);
    }
});

答案 1 :(得分:0)

尝试使用此代码:

此处参见演示

https://jsbin.com/sazifefute/edit?html,output

$.ajax({
    url: 'test.php',
    type: 'POST',
    data: {},
    dataType: 'json',
    success: function(data) {
       var rex = /<([^ >]+)[^>]*>.*?<\/\1>|<[^\/]+\/>/ig;
       data = data.replace(rex , "");
       console.log("text : "+ data);
    }
});

答案 2 :(得分:0)

只需使用replace()函数从成功仓库中删除“脚本”。

data.replace('script',“”);