2011-12-14 9 views
6

Esto no parece ser demasiado difícil de lograr, pero tengo prisa y he estado buscando una respuesta simple. Necesito enviar un formulario en la carga de la página. Esta es mi función de envío AJAX que funciona bien. Solo necesito descubrir cómo activarlo en la carga de la página.Cómo desencadenar el envío de un formulario al cargar la página usando Jquery

¡Cualquier ayuda es muy apreciada!

$("form#seller-agreement-form").submit(function() { 
     // we want to store the values from the form input box, then send via ajax below  
     $.ajax({ 
      type: "POST", 
      url: "http://www2.myurl.com/formhandler", 
      data: "email="+ email + "&status=" + status, 
      success: function(){ 
       $('form#seller-agreement-form').hide(function(){$('div#output').fadeIn();}); 

      } 
     }); 
    return false; 
    }); 

Respuesta

6

si llama $().submit() que desencadena la acción; $().submit(function) vincula un controlador al evento submit.

Sin embargo, puede omitir el envío y simplemente llamar al método ajax directamente.

$(function() { 
    $.ajax({ 
     type: "POST", 
     url: "http://www2.myurl.com/formhandler", 
     data: "email="+ email + "&status=" + status, 
     success: function(){ 
      $('form#seller-agreement-form').hide(function(){$('div#output').fadeIn();}); 

     } 
    }); 
}); 
0

llamada $("#seller-form").submit() en la forma y esto desencadenará el evento enviar.

0

Por qué no hacer

function AjaxCall() { 
    // we want to store the values from the form input box, then send via ajax below  
    $.ajax({ 
     type: "POST", 
     url: "http://www2.myurl.com/formhandler", 
     data: "email=" + email + "&status=" + status, 
     success: function() { 
      $('form#seller-agreement-form').hide(function() { 
       $('div#output').fadeIn(); 
      }); 

     } 
    }); 
    return false; 
} 

AjaxCall(); 

$("form#seller-agreement-form").submit(AjaxCall); 
3

Para presentar efectivamente la forma en la carga de la página, podría escribir algo así como

$(function() { 
    $('#seller-agreement-form').submit(); 
}); 

Pero si lo que estamos tratando de hacer es sólo para realizar la misma acción que de otro modo habría realizado cuando se envió el formulario, entonces quizás no desee enviar el formulario, pero solo para hacer esto:

function postForm() { 
    $.ajax({ 
     type: "POST", 
     url: "http://www2.myurl.com/formhandler", 
     data: "email="+ email + "&status=" + status, 
     success: function(){ 
      $('form#seller-agreement-form').hide(function(){$('div#output').fadeIn();}); 

     } 
    }); 
} 

$("form#seller-agreement-form").submit(function() { 
    postForm(); 
    return false; 
}); 

$(function() { 
    postForm(); 
}); 
3
$(function() { 
    $("form#seller-agreement-form").submit(function() { 
     // we want to store the values from the form input box, then send via ajax below  
     $.ajax({ 
      type: "POST", 
      url: "http://www2.myurl.com/formhandler", 
      data: "email="+ email + "&status=" + status, 
      success: function(){ 
       $('form#seller-agreement-form').hide(function(){$('div#output').fadeIn();}); 

      } 
     }); 
    return false; 
    }).trigger('submit'); 

}); 

Puede utilizar la función .trigger() para desencadenar el evento submit en el formulario. Encadeé las llamadas por lo que el formulario solo debe seleccionarse una vez. Tenga en cuenta que desea asegurarse de configurar el controlador de eventos submit antes de activar el evento submit.

Documentación: http://api.jquery.com/trigger

+0

Ok. Eso funcionó, sin embargo, parece que estoy atrapado en un ciclo interminable de presentaciones. –

+0

@ VaughnD.Taylor El código anterior no debe repetirse, después de llamar a la función '.trigger()' se ejecutará el controlador de eventos 'submit' que no desencadena un evento' submit'. Entonces, probablemente haya otro código personalizado que hayas escrito que esté jugando con el flujo. – Jasper

+0

Es muy probable que se repita porque está volviendo a publicar el formulario. Es posible que deba colocar un bloque if() alrededor del .trigger() y etiquetar la URL con un param para que no se vuelva a publicar. – rkw

0

usar jQuery trigger() función para activar presentar evento en su caso document.ready

0

no está seguro de si esto es lo que está pidiendo

$(document).ready(function() { 
    $("form#seller-agreement-form").submit(function() { 
     // we want to store the values from the form input box, then send via ajax below  
     $.ajax({ 
      type: "POST", 
      url: "http://www2.myurl.com/formhandler", 
      data: "email="+ email + "&status=" + status, 
      success: function(){ 
       $('form#seller-agreement-form').hide(function(){$('div#output').fadeIn();}); 

      } 
     }); 
    return false; 
    }); 
}); 
Cuestiones relacionadas