Подтвердить что ты не робот

Удаление данных jQuery, отправляемых через POST

Я использую jQuery.ajax для извлечения данных формы со страницы и отправки ее в мою базу данных (через другую страницу PHP).

Информация о форме собирается:

var X=$('#div1').val();
var Y=$('#div2').val();

Это используется для создания строки POST, т.е.

var data='varx='+X+'&vary='+Y;

Очевидно, что это проблема, если используется амперсанд. Каков наилучший способ избежать переменных, в частности, чтобы пользователь мог безопасно использовать амперсанд (&)?

Спасибо!

4b9b3361

Ответ 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);