Удаление данных jQuery, отправляемых через POST
Я использую jQuery.ajax для извлечения данных формы со страницы и отправки ее в мою базу данных (через другую страницу PHP).
Информация о форме собирается:
var X=$('#div1').val();
var Y=$('#div2').val();
Это используется для создания строки POST, т.е.
var data='varx='+X+'&vary='+Y;
Очевидно, что это проблема, если используется амперсанд. Каков наилучший способ избежать переменных, в частности, чтобы пользователь мог безопасно использовать амперсанд (&)?
Спасибо!
Ответы
Ответ 1
Лучше всего использовать объект для данных.
jQuery.post("yourScript.php", {
varx: X,
vary: Y
});
или
jQuery.ajax({
url: "yourScript.php",
type: "POST",
data: ({varx: X, vary: Y}),
dataType: "text",
success: function(msg){
alert(msg);
}
}
);
Вы также можете использовать jQuery serialize() для получения данных формы как сериализованной последовательности:
var data = jQuery(formSelector).serialize();
Метод .serialize() создает текст строка в стандартном URL-кодированном нотации. Он работает на jQuery объект, представляющий набор форм элементы. Элементы формы могут быть несколько типов.
На мой взгляд, красивее: -)
Ответ 2
encodeURIComponent
будет делать то, что вы ищете.
var X = encodeURIComponent($('#div1').val());
var Y = encodeURIComponent($('#div2').val());
Это будет кодировать все потенциально небезопасные символы.
Ответ 3
Вы можете использовать escape-функцию JavaScript
var data='varx='+escape(X)+'&vary='+escape(Y);