如何逃避“&”使用jQuery输入表单中的&符号

时间:2011-02-16 18:09:23

标签: php jquery ajax codeigniter

我的jQuery脚本有问题,它通过POST方法发送数据。问题是每当它通过具有“&”的Ajax发送数据时在句子中用&符号,当发现“&”时会切断句子。

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

The text that pass to ajax POST Output after ajax POST on firebug Data that has been save in the database The jQuery ajax POST

5 个答案:

答案 0 :(得分:17)

htmlentites

  

此函数在所有方面都与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进行了验证。