совместная отправка формы и переменных через jquery

#javascript #jquery #ajax #forms #form-submit

#javascript #jquery #ajax #формы #форма-отправить

Вопрос:

Я использую 2 типа отправки.

Есть $.post

 $.post('servers_side.php', { var1: var1, var2:var2},
function(result) 
{
some code...
});
  

который отправляет отдельные переменные в скрипт на стороне сервера.

И есть плагин ajaxSubmit, который отправляет всю форму целиком

 $('#form').ajaxSubmit({success: function(result)
{
some code...
}
});
  

Но теперь у меня есть следующая задача, допустим, у меня есть форма и несколько переменных, которые я должен отправить одновременно.

Так возможно ли отправить форму некоторые переменные вместе?

Комментарии:

1. Я недостаточно знаю, ajaxSubmit но не .serlialize() смог бы вам помочь?

Ответ №1:

Обновить

И вот как вы можете отправить:

 var Vars = {var1: var1, var2:var2};
var varsData = $.param(Vars);

// form data
var formData = $('#formID').serialize();

var data = varsData   'amp;'   formData;

$.ajax({
  type: 'POST',
  url: 'servers_side.php',
  data: data,
  success: function(res){ alert (res) }
})
  

Вы можете использовать jQuery.param() для преобразования массива или объекта в понятный для URL-адресов формат name-value paris. Вам также может потребоваться использовать jQuery.serialize() для преобразования данных формы в формат name-value paris. Вот как вы можете поступить:

 var Vars = {var1: var1, var2:var2};
var varsData = $.param(Vars);

// form data
var formData = $('#formID').serialize();

var data = varsData   'amp;'   formData;
  

Теперь data содержит все данные ваших пользовательских переменных и элементов формы, которые вы можете отправить в ajax-запросе.

Комментарии:

1. Я столкнулся с проблемой. Как я могу отправить их сейчас? используя $.post ? можете ли вы написать пример строки? как я могу поместить эти данные в $.post ?

2. и как я должен декодировать их на стороне сервера? обрабатывайте их как массив или что? потому что, если я отправил данные, я должен там указать объект $ _POST (data), но тогда как я могу получить доступ к своим переменным? в php?

3. @David: Пожалуйста, ознакомьтесь с обновленным ответом. Чтобы получить их на стороне сервера, вам нужно использовать массив POST, за которым следует имя var или элемента формы, например $_POST['name here']

4. $.post не может понять только данные. Ему нужны данные: что-нибудь, иначе javascript остановится. Я делаю что-то неправильно или $.post не может делать то, что мы хотим?

5. ГОТОВО! у вас было «}», которое должно быть удалено

Ответ №2:

Что ж, это возможно, но код может выглядеть неаккуратно. В качестве наилучшей практики вам следует добавить несколько hidden полей

 <form>
   .
   .
   .
   <input type="hidden" name="var1" id="var1" />
   <input type="hidden" name="var2" id="var2" />
   <input type="hidden" name="var3" id="var3" />
   .
   .
   .
</form>
  

И используйте этот JavaScript для установки значений в эти hidden поля

 $("#var1").val("some data 1");
$("#var2").val("some data 2");
$("#var3").val("some data 3");
  

И вы можете продолжить работу с вашим существующим $.post() кодом