Как избежать & в запросе POST в jQuery? - PullRequest
9 голосов
/ 23 июля 2010

У меня есть элемент ввода со значением & in:

<input type="checkbox" value="Biografie, životopisy, osudy, Domácí rock&amp;pop" />

Когда я пытаюсь отправить его через запрос 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.');}
});

данные сообщения, которые на самом деле отправляются:

id: 1
pop:
type: e
value: Biografie, životopisy, osudy, Domácí rock

* Обратите внимание, что все переменные в данных определены, и значение содержит $ (thatInputElement) .attr ('value').

Как правильно экранировать &amp;, чтобыэто почтовое поле value будет содержать Biografie, životopisy, osudy, Domácí rock&amp;pop?

Ответы [ 5 ]

25 голосов
/ 23 июля 2010

Вы можете установить опцию 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)

Но первый вариант гораздо проще / короче в большинстве случаев:)

2 голосов
/ 23 июля 2010

Вы пробовали этот синтаксис?

 data: {"id":id, "value": value, "type": type }
0 голосов
/ 23 июля 2010

Вы можете создать объект и передать его вместо:

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.'); }
});
0 голосов
/ 23 июля 2010

Используйте код символа HTML для & вместо: \ u0026

0 голосов
/ 23 июля 2010

Функция javascript escape () должна работать, и на сервере должен быть удален метод HttpUtility.UrlDecodeТам могут быть некоторые исключения.Кроме того, если вам нужно декодировать на клиенте, на клиенте есть эквивалент «unescape ()».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...