Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Ajax Abrir pagina en nueva ventana y mandar por post

Estas en el tema de Ajax Abrir pagina en nueva ventana y mandar por post en el foro de Javascript en Foros del Web. ¿Como le puedo hacer para abrir una nueva pagina php y a esa enviarle parametros? esto a traves de ajax Gracias ,y saludos...
  #1 (permalink)  
Antiguo 11/11/2013, 12:57
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
Pregunta Ajax Abrir pagina en nueva ventana y mandar por post

¿Como le puedo hacer para abrir una nueva pagina php y a esa enviarle parametros? esto a traves de ajax


Gracias ,y saludos

Última edición por antvo; 11/11/2013 a las 12:57 Razón: ajx
  #2 (permalink)  
Antiguo 11/11/2013, 14:23
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Hola:

Ni post ni Ajax... con javascript no se envían datos ni por post, ni por get, ni por Ajax...

Puedes usar un nombre para la ventana (segundo parámetro de window.open), y tener relación mediante window.frames... o usar una variable al abrirla:
var v = window.open(...);

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 11/11/2013, 14:43
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Tengo que enviarle dos parámetros a otra pagina(php) los recibo bien en la función que tengo de ajax pero no se como mandarlo no quiero mostrar un resultado dentro de un elemento html necesito mandarlo a una pagina y que esta le de un archivo al usuario(esto ya lo hace)

en la instrucción que me pusiste le puedo poner los parámetros que quiero enviar? el archivo php recibe por metodo post

var v = window.open(...);

Gracias y saludos
  #4 (permalink)  
Antiguo 11/11/2013, 15:24
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Hola:

La verdad es que no termino de entender... cuando hablas de ventana me despistas... Ajax se implementa con páginas, pero no existen ventanas... para enviar datos por post con Ajax debes especificarlo en la apertura del elemento Ajax (XMLHttpRequest), y los datos a enviar se pasan desde el método send, de la misma forma que se env´ían por url detrás del "?".

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 11/11/2013, 15:36
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Gracias Caricatos,

quiero ejecutar una pagina php que lo que hace es darle un archivo al usuario para que lo descargue, este archivo requiere recibir dos parámetros los que de alguna manera se los tengo que mandar pensé en ajax pero por lo que veo no es la manera de hacerlo es con la instrucción que colocaste ya la modifique me quedo :

windows.open("Rpts/RptUsuarios.php?usuario='"+user+"'&mail='"+email+" ');

sera correcto?
usuario y mail son los parámetros que se reciben en el metodo pos dentro de mi archivo php, user y email son los valores
  #6 (permalink)  
Antiguo 11/11/2013, 15:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Hola:

Estás pasando datos por url o por el método get. Para que sea post debe ser desde un formulario, o con Ajax.

Si tienes que recibir datos en la página principal puedes usar Ajax... pero estoy adivinando porque no termino de entender tus intenciones.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 11/11/2013, 16:02
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Estoy construyendo un reporte con paginado y filtros ya me funciona la paginacion y los filtros (solo filtro con 2 campos usuario y mail)
ahora quiero agregarle la funcionalidad de poder exportar a excel la busqueda que realizo en este reporte pero para poder hacer la exportacion
uso un boton este boton ahora estoy usando una funcion javascritp que obtiene los valores de los input y se los manda a la pagina que mostrara el
archivo excel solo que no me lo esta mostrando


EL boton en el html del reporte
Código HTML:
Ver original
  1. <form >
  2.  
  3. <button   Onclick="valida_frmvalidaUsuario()">Excel</button>
  4. </form>

La funcion JS
Código Javascript:
Ver original
  1. function valida_frmvalidaUsuario()
  2. {
  3. //valores de los inputs
  4.     user=document.getElementById("csuser");
  5.         email=document.getElementById("csmail");
  6. windows.open("Rpts/RptUsuarios.php?usuario='"+user+"'&mail='"+email+"');
  7. }
muchas Gracias
  #8 (permalink)  
Antiguo 12/11/2013, 09:23
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Y dale con windows!
  #9 (permalink)  
Antiguo 12/11/2013, 10:00
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
Exclamación Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Cita:
Iniciado por PHPeros Ver Mensaje
Y dale con windows!

ya lo hice con widows open ya funciona solo estoy viendo como manejar los parametros recibidos en la pagina php.

En el reporte al darle clic al botón me sale una nueva ventana donde se descarga el archivo con la consulta generada, ¿habrá alguna manera de que no me aparezca en una nueva pagina
sino que sea en la pagina del reporte? ,

Esta es la instruccion que uso para abrir la nueva pagina:

Código Javascript:
Ver original
  1. window.open("Rpts/RptUsuarios.php?user='" + user.value+ "'&email='" + email.value+"'"," ", "height=160,width=275,scrollbars=yes");
Saludos
  #10 (permalink)  
Antiguo 12/11/2013, 10:35
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Cambiando el target por _self:

Código:
window.open('URL', '_self', .....)
  #11 (permalink)  
Antiguo 12/11/2013, 12:12
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
De acuerdo Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Cita:
Iniciado por PHPeros Ver Mensaje
Cambiando el target por _self:

Código:
window.open('URL', '_self', .....)
gracias, ya se abre en la misma pagina.
  #12 (permalink)  
Antiguo 12/11/2013, 12:31
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

estoy viendo que si se envia una url con parametros por windows open entonces la pagina php debera de recibir estos por Get, ¿que se tiene que hacer para que lo haga por post?

así lo envió :

Código Javascript:
Ver original
  1. window.open('Rpts/RptUsuarios.php?user=' + user.value+ '&email=' + email.value,"_self", "height=160,width=275,scrollbars=yes");
  #13 (permalink)  
Antiguo 12/11/2013, 12:34
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Hola de nuevo.

No hay forma de hacer una petición vía POST con window.open() o similares...

En ese caso deberás usar AJAX.

Saludos
  #14 (permalink)  
Antiguo 12/11/2013, 12:45
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Hola:

Cita:
Iniciado por PHPeros Ver Mensaje
...
No hay forma de hacer una petición vía POST con window.open() o similares...
Formularios y enlaces dirigidos a ventanas

En ese artículo explico como enviar un formulario a una ventana abierta con window.open()...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #15 (permalink)  
Antiguo 12/11/2013, 12:58
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

antvo Vuelve a explicarte, danos un poco más de info.

Última edición por PHPeros; 12/11/2013 a las 13:05
  #16 (permalink)  
Antiguo 12/11/2013, 16:26
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
Pregunta Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Cita:
Iniciado por PHPeros Ver Mensaje
antvo Vuelve a explicarte, danos un poco más de info.
Gracias por tu respuesta PHPeros

Déjame explicarte lo que estaba haciendo:

Estaba construyendo un reporte con filtros y con un botón para exportar el resultado de la búsqueda de los filtros a Excel lo estaba haciendo
con Ajax pero no supe como hacerlo así que caricatos me sugirió hacerlo con la funcion Windows open la cual implemente y me funciono.

Ahora ya funciona el reporte y puedo exportar el resultado a Excel.

Pero como no quiero quedarme con la duda ¿como le puedo hacer para que en ves de hacerlo con la función windows open lo pueda hacer con ajax?

Tengo lo siguiente:

Form con un botón que llama a la funcion de que implementa Ajax
Funcion que usa Ajax esta debe enviar los datos de los campos filtro del reporte a la pagina php
pagina php: recibe parametros y genera el reporte excel (ya funciona recibe los parametros por GET)


Por lo que solo necesito como plantear la función de ajax para mandar los parámetros a la pagina por medio de GET.


el form


Código HTML:
Ver original
  1. <form >  
  2. <button   Onclick="ExcelRptCnsUsr('Rpts/RptUsuarios.php')">Excel</button>
  3. </form>



Esta es la funcion que implementa Ajax a adecuar:

Código Javascript:
Ver original
  1. function ExcelRptCnsUsr(DirUrl){
  2. alert('hola');
  3.  
  4.  
  5.   //valores de los inputs de los filtros
  6.         user=document.getElementById("csuser");
  7.         email=document.getElementById("csmail");
  8.  
  9.     //instanciamos el nuevoAjax
  10.      ajax=nuevoAjax();
  11.  
  12.      //uso del medoto POST
  13.        ajax.open("POST",DirUrl,true);
  14.      
  15. //muy importante este encabezado ya que hacemos uso de un formulario
  16.      ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  17.    
  18.   //enviando los valores :  user y email en la pagina php se reciben por GET
  19.    ajax.send("user="+user.value+"&email="+email.value);
  20.  
  21. }

Última edición por antvo; 12/11/2013 a las 16:27 Razón: js
  #17 (permalink)  
Antiguo 12/11/2013, 17:18
 
Fecha de Ingreso: agosto-2013
Ubicación: Guatemala
Mensajes: 137
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Yo te recomiento utilizar jQuery, solo necesitarás esta linea de codigo

Código:
function envia(){ //lo activas con un OnClick
	var cod = $("#idarti").val(); //el input que contiene el dato se llama idarti
$.post('precio.php', { co: cod }, function (result) {
            WinId = window.open('', 'newwin', 'width=400,height=500');//resolucion de la ventana
            WinId.document.open();
            WinId.document.write(result);
            WinId.document.close();
        });
}
y la recibis así
Código PHP:
$recibo=$_POST['co']; 
Cita:
Iniciado por antvo Ver Mensaje
¿Como le puedo hacer para abrir una nueva pagina php y a esa enviarle parametros? esto a traves de ajax


Gracias ,y saludos
  #18 (permalink)  
Antiguo 13/11/2013, 00:27
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Hola:

Cita:
Iniciado por oscurogt Ver Mensaje
Yo te recomiento utilizar jQuery, solo necesitarás esta linea de codigo

Código:
function envia(){ //lo activas con un OnClick
	var cod = $("#idarti").val(); //el input que contiene el dato se llama idarti
$.post('precio.php', { co: cod }, function (result) {
            WinId = window.open('', 'newwin', 'width=400,height=500');//resolucion de la ventana
            WinId.document.open();
            WinId.document.write(result);
            WinId.document.close();
        });
}
y la recibis así
Código PHP:
$recibo=$_POST['co']; 
¡Je, je!... otra vez la polémica... cargar una librería de varios K's para algo que se hace con menos líneas de las que estás mostrando...

Se considera también Ajax el envío de un formulario a un iframe oculto...

De todos modos, lo que siempre recomiendo es que las páginas sean accesibles, o sea que primero funcionen sin javascript y luego implementarlo para mejorar la respuesta... sería tan sencillo como tener los controles dentro del formulario... y otros ajustes de los que hemos hablado muuuuchoooo...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #19 (permalink)  
Antiguo 13/11/2013, 08:59
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
Exclamación Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Cita:
Iniciado por caricatos Ver Mensaje
Hola:



¡Je, je!... otra vez la polémica... cargar una librería de varios K's para algo que se hace con menos líneas de las que estás mostrando...

Se considera también Ajax el envío de un formulario a un iframe oculto...

De todos modos, lo que siempre recomiendo es que las páginas sean accesibles, o sea que primero funcionen sin javascript y luego implementarlo para mejorar la respuesta... sería tan sencillo como tener los controles dentro del formulario... y otros ajustes de los que hemos hablado muuuuchoooo...

Saludos




Hola Caricatos

Me parece muy buena tu propuesta la realizare de esa manera,

ya estoy utilizando Ajax ya solo me faltaría ver como implementar la función que envie los parámetros por Get, ¿que me faltaría para adecuar este envió?


// Creación del objeto XMLHttpRequest.
Código Javascript:
Ver original
  1. function nuevoAjax(xmlhttp){
  2.  
  3.     try {
  4.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.     } catch (e) {
  6.         try {
  7.             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.         } catch (e) {
  9.             xmlhttp = false;
  10.         }
  11.     }
  12.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  13.         xmlhttp = new XMLHttpRequest();
  14.     }
  15.     return xmlhttp;
  16. }



Función a adecuar:

Código Javascript:
Ver original
  1. function ExcelRptCnsUsr(DirUrl){
  2. alert('hola');
  3.  
  4.  
  5.   //valores de los inputs de los filtros
  6.         user=document.getElementById("csuser");
  7.         email=document.getElementById("csmail");
  8.  
  9.     //instanciamos el nuevoAjax
  10.      ajax=nuevoAjax();
  11.  
  12.      //uso del medoto POST
  13.        ajax.open("POST",DirUrl,true);
  14.      
  15. //muy importante este encabezado ya que hacemos uso de un formulario
  16.      ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  17.    
  18.   //enviando los valores :  user y email en la pagina php se reciben por GET
  19.    ajax.send("user="+user.value+"&email="+email.value);
  20.  
  21. }

Última edición por antvo; 13/11/2013 a las 09:00 Razón: ayx
  #20 (permalink)  
Antiguo 13/11/2013, 09:20
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

NO!

Si vas a enviar por GET no tienes que argumentar el método send() ya que sólo se usa en peticiones POST... debe quedar vacío o con valor nulo.

Así que la URL debe estar ya formada:

Código:
<button onclick="ExcelRptCnsUsr('Rpts/RptUsuarios.php?usuario='+usuario.value+'&email='+email.value)">Excel</button>
Claro, no funciona ya que las variables están en una función. Debes integrarlo dentro de la función, para no complicarte.

Última edición por PHPeros; 13/11/2013 a las 09:32
  #21 (permalink)  
Antiguo 25/11/2013, 09:29
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

ya quedo , gracias
  #22 (permalink)  
Antiguo 30/03/2016, 09:37
 
Fecha de Ingreso: marzo-2016
Mensajes: 2
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Ajax Abrir pagina en nueva ventana y mandar por post

Antvo, estoy buscando hacer lo mismo...

Cómo lo resolviste?

Yo quiero hacer un botón de exportar a excel...

Con un onclick en el botón que llama a una funcion de javascript, se ejecuta un ajax que envia datos a un PHP. Ese PHP arma un excel (si lo ejecuto directamente, poniendo los datos a la fuerza, me da la opción de guardar el excel perfectamente)... pero cuando quiero enviar a una nueva página el resultado del ajax solo obtengo caracteres raros...

El php básicamente cambia los headers para archivos excel, arma el excel y ofrece guardarlo.

Pero cuando traslado el resultado de ese PHP con el succes del jquery Ajax, nada sucede...

Pensé en enviar como resultado del ajax, todo el código Entero... pero no estoy seguro si funcionará...

Va la funcion
function armar_informe_proveedor() {

procesando_emergente();

var desde = $("#periodo_desde").val();
var hasta = $("#periodo_hasta").val();
var id_sucursal = $("#id_depositos").val();

$.ajax({
url: "content/armar_informe_proveedor.php",
global: false,
type: "get",
data: ({
desde : desde,
hasta : hasta,
id_sucursal : id_sucursal
}),
dataType: "html",
success: function(transport){
WinId = window.open('', 'newwin', 'width=400,height=500');//resolucion de la ventana
WinId.document.open();
WinId.document.write(transport);
WinId.document.close();
$("#form_procesando").hide();
}
});
}

Va el PHP con excel a mano...

// Se modifican los encabezados del HTTP para indicar que se envia un archivo de Excel.

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="ventas_proveedor.xlsx"');
header('Cache-Control: max-age=0');
require_once ('../PHPExcel/Classes/PHPExcel.php');

error_reporting(E_ALL);
ini_set('display_errors', 1);
$objPHPExcel = new PHPExcel();

// Establecer propiedades
$objPHPExcel->getProperties()
->setCreator("Cattivo")
->setLastModifiedBy("Cattivo")
->setTitle("Informe para Proveedor")
->setSubject("Informe para Proveedor")
->setDescription("Demostracion sobre como crear archivos de Excel desde PHP.")
->setKeywords("Excel Office 2007 openxml php")
->setCategory("Pruebas de Excel");

// Agregar Informacion
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Valor 1')
->setCellValue('B1', 'Valor 2')
->setCellValue('C1', 'Total')
->setCellValue('A2', '10')
->setCellValue('C2', '=sum(A2:B2)');


// Renombrar Hoja
$objPHPExcel->getActiveSheet()->setTitle('ventas');

// Establecer la hoja activa, para que cuando se abra el documento se muestre primero.
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit();

Voy a probar mandar a la nueva ventana la replica del php que funciona solo...

Abrazo y agradezco cualquier ayuda!

Etiquetas: ajax-php, php, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 09:10.