0

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

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 />
4

1 回答 1

1

thisH在此行中分配一个值:

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

然后在这一行中运行它eval()(用括号括起来):

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

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

于 2012-07-27T16:50:47.473 回答