Отправить форму, используя jQuery - PullRequest
438 голосов
/ 29 июля 2009

Я хочу отправить форму, используя jQuery. Может ли кто-нибудь предоставить код, пример или ссылку на пример?

Ответы [ 22 ]

436 голосов
/ 29 июля 2009

Это зависит от того, отправляете ли вы форму нормально или через AJAX-вызов. Вы можете найти много информации на jquery.com , включая документацию с примерами. Чтобы отправить форму в обычном режиме, воспользуйтесь методом submit() на этом сайте. Для AJAX существует множество различных возможностей, хотя вы, вероятно, захотите использовать методы ajax() или post(). Обратите внимание, что post() на самом деле является просто удобным способом вызова метода ajax() с упрощенным и ограниченным интерфейсом.

Важный ресурс, которым я пользуюсь каждый день, должен быть отмечен как Как работает jQuery . В нем есть учебники по использованию jQuery, а левая навигация дает доступ ко всей документации.

Примеры:

Normal

$('form#myForm').submit();

AJAX

$('input#submitButton').click( function() {
    $.post( 'some-url', $('form#myForm').serialize(), function(data) {
         ... do something with response from server
       },
       'json' // I expect a JSON response
    );
});

$('input#submitButton').click( function() {
    $.ajax({
        url: 'some-url',
        type: 'post',
        dataType: 'json',
        data: $('form#myForm').serialize(),
        success: function(data) {
                   ... do something with the data...
                 }
    });
});

Обратите внимание, что приведенные выше методы ajax() и post() эквивалентны. Есть дополнительные параметры, которые вы можете добавить в запрос ajax() для обработки ошибок и т. Д.

117 голосов
/ 29 июля 2009

Вам придется использовать $("#formId").submit().

Обычно вы вызываете это из функции.

Например:

<input type='button' value='Submit form' onClick='submitDetailsForm()' />

<script language="javascript" type="text/javascript">
    function submitDetailsForm() {
       $("#formId").submit();
    }
</script>

Подробнее об этом можно узнать на веб-сайте Jquery .

65 голосов
/ 29 июля 2009

В jQuery я бы предпочел следующее:

$("#form-id").submit()

Но опять же, вам действительно не нужен jQuery для выполнения этой задачи - просто используйте обычный JavaScript:

document.getElementById("form-id").submit()
61 голосов
/ 28 августа 2013

когда у вас есть существующая форма, теперь она должна работать с jquery - ajax / post теперь вы можете:

  • вешать на отправку - событие вашей формы
  • отключить функцию отправки по умолчанию
  • делай свои вещи

    $(function() {
        //hang on event of form with id=myform
        $("#myform").submit(function(e) {
    
            //prevent Default functionality
            e.preventDefault();
    
            //get the action-url of the form
            var actionurl = e.currentTarget.action;
    
            //do your own request an handle the results
            $.ajax({
                    url: actionurl,
                    type: 'post',
                    dataType: 'application/json',
                    data: $("#myform").serialize(),
                    success: function(data) {
                        ... do something with the data...
                    }
            });
    
        });
    
    });
    

Обратите внимание, что для того, чтобы функция serialize() работала в приведенном выше примере, все элементы формы должны иметь свой атрибут name.

Пример формы:

<form id="myform" method="post" action="http://example.com/do_recieve_request">

<input type="text" size="20" value="default value" name="my_input_field">
..
.
</form>

@ PtF - в этом примере данные отправляются с использованием POST, поэтому вы можете получить доступ к своим данным через

 $_POST['dataproperty1'] 

, где dataproperty1 - это имя переменной в вашем json.

здесь пример синтаксиса, если вы используете CodeIgniter:

 $pdata = $this->input->post();
 $prop1 = $pdata['prop1'];
 $prop1 = $pdata['prop2'];
36 голосов
/ 29 июля 2009

Из руководства: JQuery Doc

$("form:first").submit();
17 голосов
/ 12 апреля 2018

Для информации
если кто-нибудь использует

$('#formId').submit();

Не как то так

<button name = "submit">

Мне понадобилось много часов, чтобы найти, что submit () не будет работать так.

14 голосов
/ 21 января 2014

Используйте его для отправки формы с помощью jquery. Вот ссылка http://api.jquery.com/submit/

<form id="form" method="post" action="#">
    <input type="text" id="input">
    <input type="button" id="button" value="Submit">
</form>

<script type="text/javascript">
$(document).ready(function () {
    $( "#button" ).click(function() {
        $( "#form" ).submit();
    });
});
</script>
14 голосов
/ 28 ноября 2012

это отправит форму с прелоадером:

var a=$('#yourform').serialize();
$.ajax({
    type:'post',
    url:'receiver url',
    data:a,
    beforeSend:function(){
        launchpreloader();
    },
    complete:function(){
        stopPreloader();
    },
    success:function(result){
         alert(result);
    }
});

У меня есть хитрость, чтобы преобразовать данные формы в случайный метод

13 голосов
/ 09 апреля 2014

Обратите внимание, что если вы уже установили прослушиватель события submit для своей формы, внутренний вызов метода submit ()

jQuery('#<form-id>').submit( function(e){ 
    e.preventDefault();
    // maybe some validation in here
    if ( <form-is-valid> ) jQuery('#<form-id>').submit();
});

не будет работать, так как он пытается установить новый прослушиватель событий для события отправки этой формы (что не удается). Таким образом, вам нужно получить доступ к самому элементу HTML (развернуть его из jQquery) и напрямую вызвать submit () для этого элемента:

    jQuery('#<form-id>').submit( function(e){ 
      e.preventDefault();
      // note the [0] array access:
      if ( <form-is-valid> ) jQuery('#<form-id>')[0].submit();
    });
11 голосов
/ 29 июля 2009
$("form:first").submit();

См. события / отправить .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...