如何在jQuery的POST请求中转义?
我有一个带&符号值的输入元素:
当我尝试通过ajax请求发送它时:
$.ajax({ type: "POST", url: "/admin/kategorie/add/link.json", data: "id="+id+"&value="+value+"&type="+type, error: function(){alert('Chyba! Reloadněte prosím stránku.');} });
实际发送的post数据是:
id: 1 pop: type: e value: Biografie, životopisy, osudy, Domácí rock
*请注意,数据中的所有变量都已定义,值包含$(thatInputElement).attr(’value’)。
我怎么能逃避&
适当的,以便post field value
包含Biografie, životopisy, osudy, Domácí rock&pop
?
您可以将data
选项设置为对象,让jQuery执行编码,如下所示:
$.ajax({ type: "POST", url: "/admin/kategorie/add/link.json", data: { id: id, value: value, type: type }, error: function(){ alert('Chyba! Reloadněte prosím stránku.'); } });
您可以使用encodeURIComponent()
对每个值进行编码,如下所示:
encodeURIComponent(value)
但在大多数情况下,第一个选项更简单/更短:)
你试过这个语法吗?
data: {"id":id, "value": value, "type": type }
javascript函数“escape()”应该工作,并且在服务器上HttpUtility.UrlDecode方法应该是unescape。 可能有一些例外。 此外,如果您需要在客户端上解码,客户端上还有一个等效的“unescape()”。
使用HTML字符代码代替:\ u0026
您可以创建一个对象并将其传递给:
vars = new Object(); vars.id = id; vars.value = value; vars.type = type; $.ajax({ type: "POST", url: "/admin/kategorie/add/link.json", data: vars, error: function(){ alert('Chyba! Reloadněte prosím stránku.'); } });