у меня есть входной элемент с и в значении:
<input type="checkbox" value="Biografie, životopisy, osudy, Domácí rock&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
содержал бы 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)
Но первый вариант намного проще/короче в большинстве случаев :)
Функция javascript "escape()" должна работать, а на сервере метод HttpUtility.UrlDecode должен снять кодировку. Могут быть некоторые исключения. Кроме того, если вам нужно декодировать на клиенте, на клиенте есть эквивалент "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.'); }
});
Вы пробовали использовать этот синтаксис?
data: {"id":id, "value": value, "type": type }