Enviar un formulario usando jQuery [cerrado]

Resuelto mehul asked hace 15 años • 0 respuestas

Quiero enviar un formulario usando jQuery. ¿Alguien puede proporcionar el código, una demostración o un enlace de ejemplo?

mehul avatar Jul 29 '09 20:07 mehul
Aceptado

Depende de si envía el formulario normalmente o mediante una llamada AJAX. Puede encontrar mucha información en jquery.com , incluida documentación con ejemplos. Para enviar un formulario normalmente, consulte el submit()método en ese sitio. Para AJAX , hay muchas posibilidades diferentes, aunque probablemente quieras usar los métodos ajax()o post(). Tenga en cuenta que post()en realidad es solo una forma conveniente de llamar al ajax()método con una interfaz simplificada y limitada.

Un recurso fundamental, que uso todos los días, que deberías marcar como favorito es Cómo funciona jQuery . Tiene tutoriales sobre el uso de jQuery y la navegación de la izquierda da acceso a toda la documentación.

Ejemplos:

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...
                 }
    });
});

Tenga en cuenta que los métodos ajax()y post()anteriores son equivalentes. Hay parámetros adicionales que puede agregar a la ajax()solicitud para manejar errores, etc.

tvanfosson avatar Jul 29 '2009 13:07 tvanfosson

Tendrás que usar $("#formId").submit().

Generalmente llamarías a esto desde dentro de una función.

Por ejemplo:

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

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

Puede obtener más información sobre esto en el sitio web de Jquery .

Draco avatar Jul 29 '2009 13:07 Draco

cuando tenga un formulario existente, ahora debería funcionar con jquery - ajax/post ahora podría:

  • espera en el evento de envío de tu formulario
  • evitar la funcionalidad predeterminada de envío
  • haz tus propias cosas

    $(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...
                    }
            });
    
        });
    
    });
    

Tenga en cuenta que, para que la serialize()función funcione en el ejemplo anterior, todos los elementos del formulario deben tener su nameatributo definido.

Ejemplo del formulario:

<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: los datos se envían mediante POST en este ejemplo, por lo que esto significa que puede acceder a sus datos a través de

 $_POST['dataproperty1'] 

, donde dataproperty1 es un "nombre de variable" en su archivo json.

Aquí muestra la sintaxis si usa CodeIgniter:

 $pdata = $this->input->post();
 $prop1 = $pdata['prop1'];
 $prop1 = $pdata['prop2'];
womd avatar Aug 28 '2013 10:08 womd

En jQuery preferiría lo siguiente:

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

Pero, de nuevo, realmente no necesitas jQuery para realizar esa tarea; solo usa JavaScript normal:

document.getElementById("form-id").submit()
gernberg avatar Jul 29 '2009 13:07 gernberg