javascript中数据元素中的转义撇号

javascript中数据元素中的转义撇号,javascript,Javascript,关于哪些参数应为723的示例,“Hammer's”与Hammer's作为链接 问题在于带有撇号的系统名称。不知道如何避开撇号并保留单引号。任何帮助都将不胜感激。您可以使用各种方法: currRow = currRow + '<td><a href="#" onclick="viewTCsystem(' + data['DATA']['SYSTEM_ID'][i] + ',\''+ data['DATA']['SYSTEM_NAME'][i] + '\');">' + da

关于哪些参数应为723的示例,“Hammer's”与Hammer's作为链接


问题在于带有撇号的系统名称。不知道如何避开撇号并保留单引号。任何帮助都将不胜感激。

您可以使用各种方法:

currRow = currRow + '<td><a href="#" onclick="viewTCsystem(' + data['DATA']['SYSTEM_ID'][i] + ',\''+ data['DATA']['SYSTEM_NAME'][i] + '\');">' + data['DATA']['SYSTEM_NAME'][i] + '</a></td>...
两者都很好,但也许清洁工是第一个。 因此,您的代码将变成:

str = "Foo's bar";
str = 'Foo\'s bar';
var DATA = {
   {SYSTEM_ID: 01, SYSTEM_NAME: "Foo's"},
   {SYSTEM_ID: 02, SYSTEM_NAME: "Bar's"}
};
更好的是: 同样,最好将标记和逻辑分开,这样就可以:

str = "Foo's bar";
str = 'Foo\'s bar';
var DATA = {
   {SYSTEM_ID: 01, SYSTEM_NAME: "Foo's"},
   {SYSTEM_ID: 02, SYSTEM_NAME: "Bar's"}
};
最重要的是: 您应该真正避开整个名称,以避免任何类型的冲突或JS注入XSS

我首先想到的是btoa和atob的功能。
您可以使用btoSystem_NAME使字符串安全,然后在您的ViewtSystem中将其转换回atobSYSTEM_NAME

作为JS文本,将RegEx的所有转义替换为\'转义\

function handleViewTCsystem() {
    viewTCsystem($(this).data("id"), $(this).data("name"));
}

$(document).on("click", ".view-tc-system", handleViewTCsystem);

由于字符串似乎来自外部源,因此可以使用.replace方法


除非我误解了你真正想要的。

你可以使用双引号,这就解决了这个问题。
function handleViewTCsystem() {
    viewTCsystem($(this).data("id"), $(this).data("name"));
}

$(document).on("click", ".view-tc-system", handleViewTCsystem);
 thing = thing.replace(/\'/g, '\\\'')
data['DATA']['SYSTEM_NAME'][i].replace("'","\'")
var _id = data['DATA']['SYSTEM_ID'][i].replace("'","\'");
var _data = data['DATA']['SYSTEM_NAME'][i].replace("'","\'");
currRow = currRow + '<td><a href="#" onclick="viewTCsystem(' + _id + ',\''+ _data + '\');">' + _data + '</a></td>...