如何在jQuery的POST请求中转义?

cyp*_*her 9 ajax jquery escaping

我有一个带&符号值的输入元素:

<input type="checkbox" value="Biografie, životopisy, osudy, Domácí rock&amp;pop" />
Run Code Online (Sandbox Code Playgroud)

当我尝试通过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.');}
});
Run Code Online (Sandbox Code Playgroud)

实际发送的帖子数据是:

id: 1
pop:
type: e
value: Biografie, životopisy, osudy, Domácí rock
Run Code Online (Sandbox Code Playgroud)

*请注意,数据中的所有变量都已定义,值包含$(thatInputElement).attr('value').

我怎样才能&amp;正确逃脱,以便后期字段value包含Biografie, životopisy, osudy, Domácí rock&amp;pop

Nic*_*ver 26

您可以将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.'); }
});
Run Code Online (Sandbox Code Playgroud)

可以使用encodeURIComponent()这样编码每个值:

encodeURIComponent(value)
Run Code Online (Sandbox Code Playgroud)

但在大多数情况下,第一个选项更简单/更短:)