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

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

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

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

htmlentites

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

如果你想要解码(相反),你可以使用html_entity_decode ()。

例:

echo htmlentities("&"); // & 

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

 encodeURIComponent(string input); 

例:

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

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

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

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

数据:“name =”+ name +“&message =”+ message + …

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

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

data:{“name”:name,“email”:email,“subject”:subject,“comments”:comments},

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

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

在第74行

 data: : "&task_d=" + escape(task_d) + "" 

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

 data: : "&task_d='" + task_d + "'" 

如果您将data参数作为Javascript对象传递,它将为您转换字符(并且IMO使代码看起来更整洁)。 因此,您应该将$ .ajax调用更改为以下内容:

 data: {"user_id": user_id, "time_r": time_r, "task_d": task_d, "p_id": p_id, "df": finished}, 

您可以使用’encodeURIComponent’来完成该组件的URL编码。 我使用了这个,并通过IE,Firefox和Chrome浏览器进行了validation。