#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()
кодом