$ (this).serialize() - Как добавить значение?
в настоящее время у меня есть следующее:
$.ajax({
type: 'POST',
url: this.action,
data: $(this).serialize(),
});
Это прекрасно работает, однако я хотел бы добавить значение к данным, поэтому я попробовал
$.ajax({
type: 'POST',
url: this.action,
data: $(this).serialize() + '&=NonFormValue' + NonFormValue,
});
Но это не верно. Любые идеи о том, как добавить элемент в строку сериализации? Это глобальная переменная страницы, которая не является конкретной.
Ответы
Ответ 1
Вместо
data: $(this).serialize() + '&=NonFormValue' + NonFormValue,
вы, вероятно, захотите
data: $(this).serialize() + '&NonFormValue=' + NonFormValue,
Вы должны быть осторожны с URL-кодированием значения NonFormValue
, если он может содержать любые специальные символы.
Ответ 2
В то время как матовый b ответ будет работать, вы также можете использовать .serializeArray()
, чтобы получить массив из данных формы, изменить его и использовать jQuery.param()
, чтобы преобразовать его в кодировку с URL-адресами. Таким образом, jQuery обрабатывает сериализацию ваших дополнительных данных для вас.
var data = $(this).serializeArray(); // convert form to array
data.push({name: "NonFormValue", value: NonFormValue});
$.ajax({
type: 'POST',
url: this.action,
data: $.param(data),
});
Ответ 3
Сначала добавьте элемент, а затем сериализуйте:
$.ajax({
type: 'POST',
url: this.action,
data: $.extend($(this), {'NonFormValue': NonFormValue}).serialize()
});
Ответ 4
во-первых, не стоит
data: $(this).serialize() + '&=NonFormValue' + NonFormValue,
будет
data: $(this).serialize() + '&NonFormValue=' + NonFormValue,
а во-вторых, вы можете использовать
url: this.action + '?NonFormValue=' + NonFormValue,
или если действие уже содержит какие-либо параметры
url: this.action + '&NonFormValue=' + NonFormValue,
Ответ 5
Не забывайте, что вы всегда можете:
<input type="hidden" name="NonFormName" value="NonFormValue" />
в вашей фактической форме, которая может быть лучше для вашего кода в зависимости от случая.
Ответ 6
Вы можете написать дополнительную функцию для обработки данных формы, и вы должны добавить ваши данные неформации в качестве значения данных в форме. Пример:
<form method="POST" id="add-form">
<div class="form-group required ">
<label for="key">Enter key</label>
<input type="text" name="key" id="key" data-nonformdata="hai"/>
</div>
<div class="form-group required ">
<label for="name">Ente Name</label>
<input type="text" name="name" id="name" data-nonformdata="hello"/>
</div>
<input type="submit" id="add-formdata-btn" value="submit">
</form>
Затем добавьте этот jquery для обработки формы
<script>
$(document).onready(function(){
$('#add-form').submit(function(event){
event.preventDefault();
var formData = $("form").serializeArray();
formData = processFormData(formData);
// write further code here---->
});
});
processFormData(formData)
{
var data = formData;
data.forEach(function(object){
$('#add-form input').each(function(){
if(this.name == object.name){
var nonformData = $(this).data("nonformdata");
formData.push({name:this.name,value:nonformData});
}
});
});
return formData;
}