我的jQuery脚本有问题,它通过POST方法发送数据。问题是每当它通过具有“&”的Ajax发送数据时在句子中用&符号,当发现“&”时会切断句子。
请查看下面的图片了解更多信息。
答案 0 :(得分:17)
此函数在所有方面都与htmlspecialchars()相同,除了htmlentites()之外,所有具有HTML字符实体等价物的字符都会被转换为这些实体。
如果您想要解码(相反),可以使用html_entity_decode()。
示例:
echo htmlentities("&"); // &
如果您在浏览器中直接执行此操作,则应该可以使用:
encodeURIComponent(string input);
示例:
encodeURIComponent($.trim($("input[name=t-tim_rendered-"+id+"]").val().toString()));
答案 1 :(得分:7)
我在这种情况下遇到了很大的问题。
这只是说Andrew Koester的最后一个答案是我正在寻找的完美答案。
如果您通过.ajax()调用将多个表单条目从jQuery表单传递给PHP:
数据:“name =”+ name +“& message =”+ message + ...
请勿使用此方法,它会阻止用户在表单的任何输入字段中写入&符号(&)字符。
根据安德鲁的建议使用这个:
数据:{“名称”:姓名,“电子邮件”:电子邮件,“主题”:主题,“评论”:评论},
这样,用户可以编写任何类型的特殊字符,而不用担心与ajax声明冲突。
答案 2 :(得分:4)
您可以使用本机javascript escape()函数
第74行
data: : "&task_d=" + escape(task_d) + ""
或者,您可以将查询字符串值括在引号
中data: : "&task_d='" + task_d + "'"
答案 3 :(得分:3)
如果您将data
参数作为Javascript对象传递,它将为您转换字符(并且IMO使代码看起来更整洁)。因此,您应该将$ .ajax调用更改为以下内容:
data: {"user_id": user_id, "time_r": time_r, "task_d": task_d, "p_id": p_id, "df": finished},
答案 4 :(得分:1)
您可以使用' encodeURIComponent'完成该组件的URL编码。我使用了这个,并通过浏览器IE,Firefox和Chrome进行了验证。