Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/07/2014, 01:04
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Dos Formulario con Ajax

Ten una función Ajax que puedas reutilizar y según sea el formulario cuyos datos vayan a ser procesados, ejecutas dicha función y le envías los datos respectivos.

Código Javascript:
Ver original
  1. var forms = document.getElementsByTagName("form"),
  2.     ajax = function(json){
  3.         var data = (function(){
  4.                 for (var i = 0, serialized = [], l = json.data.length; i < l; serialized.push(json.data[i].name + "=" + json.data[i].value), i++);
  5.                 return serialized.join("&");
  6.             })(),
  7.             xhr = window.XMLHttpRequest ?
  8.                   new XMLHttpRequest() :
  9.                   new ActiveXObject("Microsoft.XMLHTTP") ||
  10.                   new ActiveXObject("Msxml2.XMLHTTP");
  11.  
  12.         if (json.type.toUpperCase() == "GET"){
  13.             json.url += "?" + data;
  14.             data = null;
  15.         }
  16.  
  17.         xhr.open(json.type || "GET", json.url, true);
  18.         xhr.onreadystatechange = function(){
  19.             if (xhr.readyState == 4){
  20.                 switch (xhr.status){
  21.                     case 200:
  22.                         if (json.success) json.success(xhr.responseText);
  23.                         else console.log(xhr.responseText);
  24.                     break;
  25.  
  26.                     case 404: default:
  27.                         if (json.error) json.error(xhr.status);
  28.                         else console.log(xhr.status);
  29.                     break;
  30.                 }
  31.             }
  32.         };
  33.  
  34.         if (json.type.toUpperCase() == "POST")
  35.             xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  36.         xhr.send(data);
  37.     };
  38.  
  39. for (var i = 0, l = forms.length; i < l; i++){
  40.     forms[i].addEventListener("submit", function(event){
  41.         event.preventDefault(); //Cancelo el envío de los datos
  42.         ajax({
  43.             url: this.action, //Dirección hacia la cual se enviarán los datos
  44.             type: this.method, //Método elegido para el envío de datos
  45.             data: this.elements, //Los elementos del formulario
  46.             success: function(response){ //En caso de recibir una respuesta exitosa
  47.                 console.log(response);
  48.             },
  49.             error: function(textStatus){ //En caso de producirse un error
  50.                 console.log("Error: " + textStatus);
  51.             }
  52.         });
  53.     }, false);
  54. }

Lo que hace esta función es recibir un conjunto de datos agrupados en un objeto literal, al estilo del método Ajax de jQuery, luego, convierte al conjunto de datos del formulario en una query string y evalúa el tipo de método elegido; si es "GET", concatena la query string a la URL, caso contrario, la envía mediante el método send.

Si deseas, puedes ampliar su funcionalidad, esta función la creé para mis proyectos personales y aunque ahora es más amplia, esta es la estructura base.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 22/07/2014 a las 01:31 Razón: Mejora