如何使用jQuery在表单输入中转义“&”&符号
我的jQuery脚本有问题,通过POST方法发送数据。 问题是,只要它通过Ajax发送数据,句子中有“&”符号,它会在找到“&”时剪切句子。
请查看下面的图片了解更多信息。
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。