如何在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。 可能有一些例外。 此外,如果您需要在客户端上解码,客户端上还有一个等效的“unes​​cape()”。

使用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.'); } });