У меня есть базовая форма подписки на новостную рассылку с полем электронной почты и двумя кнопками (подписаться и отписаться).Я хочу передать значение кнопки как часть данных ajax, но .serialize () не включает значения кнопки, поскольку они относятся к событию.
Вот мой код: Javascript:
$('#newsletter_form').submit(function() {
$.ajax({
type:'POST',
url:'/newsletter',
data: $(this).serialize(),
dataType:'json',
success: function(data) {
if(data['status'] == true) {
alert(data['status']);
}
else {
alert(data['error']);
}
}
});
return false;
});
HTML:
<form id="newsletter_form"action="/newsletter/" method="post">
<input type="text" name="email" value="Email Address" class="toggle"/>
<button class="btn_grey" name="submit" type="submit" value="subscribe"><span>Subscribe</span></button>
<button class="btn_grey" name="submit" type="submit" value="unsubscribe"><span>Unsubscribe</span></button>
</form>
Редактировать Я исправил это с помощью события нажатия кнопки и использования parent (). Serialize () плюс attr ("value") длязапрос данных.
$('#newsletter_form button').click(function() {
$.ajax({
type:'POST',
url:'/newsletter',
data: $(this).parent('form').serialize() + '&submit='+ $(this).attr("value"),
dataType:'json',
success: function(data) {
if(data['status'] == true) {
alert(data['status']);
}
else {
alert(data['error']);
}
}
});
return false;
});