Plugin jQuery para enviar variables POST via Formulario oculto

404 views
Skip to first unread message

pAk0s

unread,
Aug 8, 2011, 2:57:59 PM8/8/11
to PHP México
Saludos.... ando buscando algun plugin de jQuery que antravez de un
conjunto de variables cree un Form a buelo y lo envie... el codigo lo
puedo hacer.. ya van dos ocaciones que lo necesito y veo que lo
necesitare mas de una vez,

en si tengo un servicio que genera .xls a partir de algunos datos que
se le envian por POST, esto en definitiva no se hara con ajax, lo que
necesito es crear el form pero que no sea visible y enviar estas
variables al servidor con la peticion "normal" ya que tras la peticion
inicia la descarga, si uso AJAX el xls se carga en la respuesta y eso
no es lo que se busca si no que se descargue....

Juan José González

unread,
Aug 8, 2011, 3:05:36 PM8/8/11
to php-m...@googlegroups.com
Lo que puedes hacer es que en el servidor generas el xls y lo guardas
en el disco, el ajax regresaría un enlace de descargar y cuando le
llega ese enlace al browser muestre la ventanita para descargar.
Después borras el xls y ya.

> --
> Este correo ha llegado a ti desde la Lista de Correo del Grupo PHP México.
> Para cambiar la configuración de tu suscripción visita: http://grupo.phpmexico.mx/
>
> * Visita nuestro sitio: http://phpmexico.mx/
> * Síguenos en Twitter: http://twitter.com/phpmx
> * Únete al Grupo de Facebook: http://www.facebook.com/pages/PHP-Mexico/137017066340686
>

--
Cordialmente,

Juan José González
Ingeniero en informática
(044) 669 912 3037

Nokrosis

unread,
Aug 8, 2011, 3:19:26 PM8/8/11
to php-m...@googlegroups.com
Si quieres que se descargue, crea un iframe oculto y envía los datos de tu formulario al iframe, la url que cargues en el iframe deberá tener los encabezados para forzar la descarga. Con eso haces una descarga "directa" sin tener que mostrar una url de descarga ni tener que recargar la página.

Saludos.

2011/8/8 Juan José González <juanj...@gmail.com>

Iván Zenteno

unread,
Aug 8, 2011, 3:30:46 PM8/8/11
to php-m...@googlegroups.com, php-m...@googlegroups.com
Y por que no hacer un form hidden y que se envíe después de recibir x evento del mouse. Es un simple $form.submit().

Claro que no enviaras por ajax sino por post syncrono.

Saludos

Luis Fernando Cázares Bulbarela

unread,
Aug 8, 2011, 3:53:02 PM8/8/11
to php-m...@googlegroups.com
Si deseas que se descargue, usa la librería de PEAR SpreadSheet, con eso lo solucionarás en fa

http://pear.php.net/

Saludos

Jose Francisco Díaz Arredondo

unread,
Aug 8, 2011, 6:32:23 PM8/8/11
to php-m...@googlegroups.com
gracias!.... ya tenia todo eso cotrolado.. lo de la generacion del xls, y tambien lo del envio, solo que buscaba un plugin para no tener que hacerlo =P, pero no lo encotre y por eso pregunte aver si alguien tenia algo parecido, lo que necesitba es que a partir de un json dado con "x" informaciòn se creara un form a vuelo y se enviara en automatico al servicio que en mi caso crea y envia como respuesta el xls, y por lo que vi voy a necesitar implementarlo en varias partes del sistema que programo me puse a ver si existia un pluginsin x hay.. pero ps no lo encotre asi que me lo cree..

/**
 * jQuery.createFormAndSend crea un formulario oculto y lo envia
 *
 * action: (opcional) url destino (por defecto "")
 * data : (opcional) un json con los datos que se enviarán
 * method : (opcional) metodo que usara el Form para ser enviado (por defecto GET)
 * target : (opcional) target del form (por defecto _self)
 *
 * By JFcoDiaz 08/08/2011
 */

(function($){
  jQuery.createFormAndSend = function(action,data,method,target){
    var ud, $form = $(document.createElement("form"));         
    data   !== ud || (data = {} );
    action !== ud || (action="");
    method !== ud || (method="GET");
    target !== ud || (target="_self");
    $form.attr({
      action : action,
      method : method,
      target : target
    });
    $.each(data,function(name,value){
      $form.append($(document.createElement("input")).attr({
        type:'hidden',
        value:value,
        name:name
      }));
    });
    $form.appendTo("body:eq(0)").submit().remove();
  }
})(jQuery);



--------------------
Ej:
var datos={t1:"hola Mundo!",v2:"otra Var","_blank"};
jQuery.createFormAndSend("http://localhost/index.php/export/export/xml/",datos,'POST');





2011/8/8 Luis Fernando Cázares Bulbarela <luis.f....@gmail.com>
BA2.png
360.gif
Reply all
Reply to author
Forward
0 new messages