Foros del Web » Programando para Internet » Javascript »

ejecutar PHP desde Javascript - Ajax

Estas en el tema de ejecutar PHP desde Javascript - Ajax en el foro de Javascript en Foros del Web. Hola, queria hacer una consulta a ver si alguien me puede ayudar pq no acierto con esto. El caso es q tengo un formulario para ...
  #1 (permalink)  
Antiguo 18/06/2012, 07:06
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
ejecutar PHP desde Javascript - Ajax

Hola, queria hacer una consulta a ver si alguien me puede ayudar pq no acierto con esto. El caso es q tengo un formulario para poder hacer un informe, le pido los datos a la base de datos, las consultas las hago con php etc. y de la BD obtengo un csv q transformo a excell para poder guardar o abrir. Si lo hago asi directamente no tengo problema, el problema lo tengo pq tengo q comprobar los rangos de fechas, entonces lo suyo sería enviarlo por AJAX ¿no? y sobre todo pensando en q no quiero q se abra una ventana vacia con la consulta php. entonces hago un script pero no me abre la ventanita para aceptar o abrir el excell.
este es mi script en ajax
Código HTML:
<script type="text/javascript">
function compareEslora(formname,field1,field2){
	f1=1*document.forms[formname].elements[field1].value;
	f2=1*document.forms[formname].elements[field2].value;
	if (f1>f2){alert("Compruebe que ha introducido bien los datos. Introduzca una eslora minima y una maxima!");return false;}else{return true;}
}
function enviarDatos(){
	var trips = document.getElementById('trips');
	probadate1 = document.getElementById('date1');
	proba_date1 = probadate1.value;
	probadate2 = document.getElementById('date2');
	proba_date2 = probadate2.value;
	probametier = document.getElementById('metier');//texto - nombre de metier
	proba_metier = probametier.value;
	probapuerto = document.getElementById('harbour');//texto - nombre de puerto
	proba_puerto = probapuerto.value;
	probabarco = document.getElementById('ship');//texto - nombre de barco
	proba_barco = probabarco.value;
	probaminimo = document.getElementById('min_eslora');//numero
	proba_minimo = probaminimo.value;
	probamaximo = document.getElementById('max_eslora');//numero
	proba_maximo = probamaximo.value;
	probaices = document.getElementById('zona_ices');//texto - nombre zona
	proba_ices = probaices.value;
	probarectangulo = document.getElementById('rectangulo_ices');//texto - nombre rectangulo
	proba_rectangulo = probarectangulo.value;
	probarte = document.getElementById('arte');//texto - nombre arte pesca
	proba_arte = probarte.value;
	compareDates('trips','date1','date2');//viene de otro script de calendario
	compareEslora('trips','min_eslora','max_eslora');
	url_proba='date1='+proba_date1+'&date2='+proba_date2+'&metier='+proba_metier+'&harbour='+proba_puerto+'&ship='+proba_barco+'&min_eslora='+proba_minimo+'&max_eslora='+proba_maximo+'&zona_ices='+proba_ices+'&rectangulo_ices='+proba_rectangulo+'&arte='+proba_arte;
	xhr(url_proba);
}
var xmlhttp;
function xhr(trips){ 
		if (window.XMLHttpRequest)
  			{
  				xmlhttp=new XMLHttpRequest();
	  		}
		else
	  		{
  				xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  		}
		xmlhttp.onreadystatechange = procesarRespuesta; 
		xmlhttp.open("POST", "report_export.php", true); 
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", 10);
		xmlhttp.setRequestHeader("Connection", "close");
		xmlhttp.send(trips);
		}
	function procesarRespuesta(){
		if(xmlhttp.readyState == 4) {
      		if(xmlhttp.status == 200) {
				return xmlhttp;
			} 
    	}
}
</script> 
no tengo nada claro como hacer esa funcion procesarRespuesta para que me devuelva la ventanita windows de abrir o guardar.
esta es el export q hago en php
Código PHP:
 crea_archivo_csv_trips_report($_POST$dbconn$tmp_path.'trips_report.csv');
    
    try {
        
// Comprobar tamaño del archivo csv
        
if (filesize($tmp_path.'trips_report.csv') == || false) {
            throw new 
Exception("Consulta sin resultados");
        }
    } catch (
Exception $e) {
        echo 
'<script type="text/javascript">';
        echo 
'alert("Consulta sin resultados.")';
        echo 
'</script>';
        exit();
    }

    
// Convertir el csv en xls
    
csv2xls($tmp_path.'trips_report.csv'$tmp_path.'trips_report.xls'$glue=";"$enclosure='"');

    
envia_archivo_a_navegador($tmp_path.'trips_report.xls');    

    
// Closing connection 
alguien me puede decir algo. Gracias.
  #2 (permalink)  
Antiguo 18/06/2012, 08:08
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: ejecutar PHP desde Javascript - Ajax

bueno realmente esta como largo el codigo, porque no simplemente validas con javascript las fechas e imprimis puro html colocando el encabezado para que te genere un excel?

Código PHP:
Ver original
  1. $reporte="mireporte";
  2.     header('Content-type: application/vnd.ms-excel');
  3.     header("Content-Disposition: attachment; filename=".$reporte.".xls");
  4.     header("Pragma: no-cache");
  5.     header("Expires: 0");
  6.    //Aca todo el html
  #3 (permalink)  
Antiguo 19/06/2012, 14:22
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: ejecutar PHP desde Javascript - Ajax

antes de nada, gracias. pues no lo tengo demasiado claro. ¿no debo pasar todos los parametros del formulario en la url?, el caso es q si hago solo la validacion de la fecha y mas la eslora y se la paso en la url, salta un error de q el resto de parametros no existen. de cualquier modo ¿pq no me abre el mensaje de abrir o guardar el excell? cuando hago el action sin enviar la url me lo abre:
Código HTML:
<form action="report_export.php" method="post" id="trips" name="trips"> 
esto otro es como envio el formulario con ese script ajax y no me devuelve nada
Código HTML:
<form action="#" method="post" id="trips" name="trips" enctype="multipart/form-data" onsubmit="return false;">
<!-- formulario -->
<input name="OK" type="submit" value="OK" onclick="enviarDatos()"/> 
  #4 (permalink)  
Antiguo 19/06/2012, 14:27
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: ejecutar PHP desde Javascript - Ajax

NO necesitas AJAX para eso, necesitas utilizar una libreria especializada en Excel como PHPExcel que te genere un documento Excel válido y con el que puedas manipular mucho mejor el tipo de datos cosa que un CSV no te permite, ni ajax ni javascript para eso ¿de donde sacaste eso?????
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 21/06/2012, 00:47
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: ejecutar PHP desde Javascript - Ajax

Oka, antes de nada muchisimas gracias. finalmente hago una funcion en javascript para validar los datos
Código HTML:
<script type="text/javascript">
function compareEslora(formname,field1,field2){
	f1=1*document.forms[formname].elements[field1].value;
	f2=1*document.forms[formname].elements[field2].value;
	if (f1>f2){alert("Compruebe que ha introducido bien los datos. Introduzca una eslora minima y una maxima!");return false;}else{return true;}
}
function validarDatos(){
	probadate1 = document.getElementById('date1');
	proba_date1 = probadate1.value;
	probadate2 = document.getElementById('date2');
	proba_date2 = probadate2.value;
	probaminimo = document.getElementById('min_eslora');//numero
	proba_minimo = probaminimo.value;
	probamaximo = document.getElementById('max_eslora');//numero
	proba_maximo = probamaximo.value;
	if (compareDates('trips','date1','date2')==false)
		return false;
	if (compareEslora('trips','min_eslora','max_eslora')==false)
		return false;
	return true;
}
</script> 
y en el onSubmit llamo la funcion validarDatos(); ahora me hace la comparacion y me envia la consulta. Pero si los datos son incorrectos me salta a la pagina PHP q llamo en el action del form y me salta el alert. Como evito esto? pq si hago en el php un header o un history.back() o <?=$_SERVER['HTTP_REFERER'] ?> no pinta bien la cosa pq estoy usando un script ajax para cargar las paginas en un div en una pagina principal como si fuera un Iframe, ¿no se si me explico?.

Etiquetas: ajax, formulario, funcion, php
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:49.