2013-12-20 3 views
3

Я использую jQuery для сериализации формы кнопки отправки. Но когда я использую код, он удаляет эффект return false, и страница обновляется. И когда я удаляю код сериализации, он работает хорошо!Как сериализовать текущую форму?

Я использую это:

$('input[value=Save]').click(function() { 
    $.ajax({ 
     url: '/ajax_requests/update_info', 
     data: $(this).form.serialize(), 
     success: function (data) { 

     } 
    }); 
    return false; 
}); 

Я уверен, что я делаю ошибку, используя $(this).form.serialize(), но я не могу понять, и ни я могу найти его в Интернете.

ответ

2

JQuery объект не имеет form свойство, можно получить с помощью form.prop('form'), но как возвращаемый объект является объектом DOM Element, для использования serialize() вы должны обернуть его с JQuery, так почему бы не:

$(this.form).serialize(), 
+0

Это то, что мы называем ** Бинго! ** :) –

3

Не связывайтесь с событием клика определенной кнопки, используйте событие submit самой формы, а затем ваша форма будет this.

$('form').submit(function (event) { 
    event.preventDefault() 
    $.ajax({ 
    data: $(this).serialize() 
    ... 
    }); 
}); 

Если вы хотите использовать кнопку, чтобы достигнуть формы, как в вашем примере, вы бы использовать $(this).closest('form').serialize().

+0

Использование события 'submit' гарантирует, что проверка формы HTML5 проверяется перед отправкой формы. –

Смежные вопросы