Есть ли в JavaScript способ извлечения данных формы, которые * будут * отправлены вместе с формой без ее отправки? - PullRequest
1 голос
/ 11 августа 2011

Если у меня есть HTML-форма, скажем ...

<form id='myform'>
    <input type='hidden' name='x' value='y'>
    <input type='text' name='something' value='Type something in here.'>
    <input type='submit' value='Submit'>
</form>

... а затем я использую jQuery для ответа на событие отправки формы, например,

$('#myform').submit(function() {
    ...
    return false;
});

Теперь предположим, что я хочу отправить форму как вызов AJAX вместо фактической отправки ее «традиционным» способом (в виде новой страницы). Есть ли простой способ получить объект JS, содержащий данные, которые будут отправлены, которые я могу передать в $.post()? Так что в приведенном выше примере это будет выглядеть примерно так ...

{
    x: 'y',
    something: 'Type something in here.'
}

или я должен сам испечь?

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

См. Метод serialize().

$('#myform').submit(function() {
    jQuery.ajax({
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        success: function () {
           //
        }
    });

    return false;
});
2 голосов
/ 11 августа 2011

Поскольку вы уже используете jQuery, используйте jQuery.serialize().

$('#myform').submit(function() {
    var $form = $(this);
    var data = $form.serialize();
    // ...
});
...