使用javascript从字符串中删除额外或特殊字符时遇到问题

时间:2012-07-27 16:32:51

标签: javascript jquery json string eval

我有一个删除额外或特殊字符的功能:

function escapeHtml(unsafe) {
return unsafe
     .replace(/\r?\n|\r/g, "")
     .replace(/(\r\n|\n|\r)/gm," ")
     .replace(/\s+/g," ")
     .replace(/&/g, "&")
     .replace(/</g, "&lt;")
     .replace(/>/g, "&gt;")
     .replace(/"/g, "&quot;")
     .replace(/'/g, "&#039;")
     .replace(/!/g, "");
   }

当我调用它时,我的代码的这部分看起来像:

$(".product_json", data).each(function(){
    var thisH = $(this).html();
    var myNewString = eval( '('+ thisH +')');
    var toBeEscaped = myNewString.item_description;
    var escapedString = escapeHtml(toBeEscaped);
    myNewString.item_description = escapedString;
    myNewString = JSON.stringify(myNewString);
        console.log(myNewString);
//product_json.push( jQuery.parseJSON( myNewString ) );
});

但是它在控制台中有些说法:SyntaxError: unterminated string literal

此字段中的数据类似于

VINOVO - Lotti TERRENO Hobbystico - Campestre!!! <br />

1 个答案:

答案 0 :(得分:1)

您在此行中为thisH分配值:

var thisH = $(this).html();

然后在此行中通过eval()(括号括起来)运行它:

var myNewString = eval( '('+ thisH +')'); 

使用调试器在触发SyntaxError时检查thisH的值。用括号括起来时它是有效的JavaScript吗?如果没有,那就是你的问题。