为ajax调用转义单引号

escaping single quotes for ajax calls

本文关键字:单引号 转义 调用 ajax      更新时间:2023-11-27

我有一个php页面,它是通过AJAX调用的。基本上,它从我的数据库中获取一些值,并通过输入等返回表。问题是,当它获取的字符串包含引号时(实际上似乎只有单引号受到影响)。因此,在php页面上有这样的内容:

$value  = htmlentities($DB_result->cloumn);
echo'<input type = "button" onClick = "$(''#something'').val('''.$value.''');" />'

因此,如果$value="hello",没有问题,但如果:$value="hello",我从中进行AJAX调用的页面会抛出一些这样的错误:语法错误:意外标识符。所以我想以美元为单位的报价并没有逃脱,我认为htmlentities会逃脱。任何关于如何解决这个问题的想法都非常感谢。非常感谢。

问题是$value包含单引号,这会干扰javascript的正确解析。来自html实体的手动输入:

所有具有HTML字符实体等价物的字符都被翻译成这些实体。

这意味着你的单引号不是转义的,它们只是以浏览器更好理解的方式翻译的。您需要使用addslashes():

$value  = htmlentities(addslashes($DB_result->cloumn));

"'hello'"将变成"''hello''",在浏览器中看起来像:

<input type = "button" onClick = "$('#something').val('''hello''');" />

它将字符串'hello'(带单引号)属性为$('#something') 的值属性

尝试:

$value  = htmlentities($DB_result->cloumn, ENT_QUOTES, "utf-8");

将ENT_QUOTES作为标志传递将转换双引号和单引号。