如何使用jQuery在表单输入中转义"&"符号字符

jam*_*rie 14 php ajax jquery codeigniter

我的jQuery脚本有问题,通过POST方法发送数据.问题是,只要它通过Ajax发送数据,句子中有"&"符号,它会在找到"&"时剪切句子.

请查看下面的图片了解更多信息.

传递给ajax POST的文本 在firebug上ajax POST后输出 已保存在数据库中的数据 jQuery ajax POST

Rob*_*itt 17

htmlentites

此函数在所有方面与htmlspecialchars()相同,除了使用htmlentites()之外,所有具有HTML字符实体等效项的字符都将转换为这些实体.

如果您想要解码(反向),您可以使用html_entity_decode().

例:

echo htmlentities("&"); // &
Run Code Online (Sandbox Code Playgroud)

如果你在浏览器中直接这样做,你应该可以使用:

encodeURIComponent(string input);
Run Code Online (Sandbox Code Playgroud)

例:

encodeURIComponent($.trim($("input[name=t-tim_rendered-"+id+"]").val().toString()));
Run Code Online (Sandbox Code Playgroud)


小智 7

在这种情况下,我遇到了一个很大的问题.

这只是说安德鲁·科斯特的最后一个答案是我正在寻找的完美答案.

如果您通过.ajax()调用将多个表单条目从jQuery表单传递给PHP,如下所示:

数据:"name ="+ name +"&message ="+ message + ...

不要使用这种方法,它会阻止用户在表单的任何输入字段上写入和号(&)字符.

根据安德鲁的建议使用这个:

data:{"name":name,"email":email,"subject":subject,"comments":comments},

这样,用户可以编写任何类型的特殊字符,而不用担心与ajax声明冲突.


Mic*_*hal 6

您可以使用本机 javascript escape() 函数

在第 74 行

data: : "&task_d=" + escape(task_d) + "" 
Run Code Online (Sandbox Code Playgroud)

或者,您可以将查询字符串值括在引号中

data: : "&task_d='" + task_d + "'" 
Run Code Online (Sandbox Code Playgroud)