带有jQuery ajax的字符串中的单引号

Ada*_*dam 10 javascript string jquery escaping

我遇到了用户输入数据的问题,如果有单引号,脚本就会出错.

处理用户输入的单引号的最佳方法是什么,因此它不会干扰jquery/javascript?

更新:

我通过ajax将它发送到数据库.这是json ajax调用的数据参数.
data: "{str_" + sectionName + " :'" + UpdateText + "',EntityID: '" + EntityID + "' }",
更新文本是可以包含引号的字符串.

mbr*_*ort 23

您需要使用\来转义引号,或者取决于您计划如何使用字符串,您可以使用javascript转义和unescape函数.

alert(escape("mike's"));
alert(unescape(escape("mike's")));
Run Code Online (Sandbox Code Playgroud)

还要检查一下使用jQuery转义字符串的方法


Hab*_*bib 5

对于 AJAX 请求中的转义值,不要编写自己的转义实现或使用escape()方法。 escape()已弃用)。而是创建一个 JSON 对象并使用JSON.stringify方法。

对于您的情况,它应该是这样的(暂时忽略动态属性)

//Create Javascript object    
var obj = { SectionName: UpdateText, EntityID: EntityID };
Run Code Online (Sandbox Code Playgroud)

稍后在您的 ajax 请求中,您可以执行以下操作:

data: JSON.stringify(obj),
Run Code Online (Sandbox Code Playgroud)

如果您想对 JSON 对象使用动态属性,那么对于您的特定情况,您可以分两步创建对象,例如:

var obj = { EntityID: EntityID };
obj["str_" + sectionName] = UpdateText;
Run Code Online (Sandbox Code Playgroud)

这种做法将使您免于手动转义单/双引号和其他无效字符。JSON.stringify会照顾到这一点。

(我来到这里寻找一个有点类似的问题,但找不到合适的工作解决方案,所以最终在这里发布了一个)


Jon*_*ust 3

您可以找到众多 String.replaceAll 实现之一或编写自己的实现,只需将任何单引号或双引号替换为转义版本(如 \" 或 \')。