Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Pasar mas de un dato con AJAX y PHP

Estas en el tema de Pasar mas de un dato con AJAX y PHP en el foro de Frameworks JS en Foros del Web. Mu buenas, soy un principiante en esto de AJAX y quisiera saber si hay algun modo de hacer lo que pido a continuacion. Gracias por ...
  #1 (permalink)  
Antiguo 24/04/2007, 07:30
 
Fecha de Ingreso: diciembre-2006
Mensajes: 53
Antigüedad: 17 años, 4 meses
Puntos: 0
Pasar mas de un dato con AJAX y PHP

Mu buenas, soy un principiante en esto de AJAX y quisiera saber si hay algun modo de hacer lo que pido a continuacion. Gracias por adelantado.

Este es codigo de la funcion en ajax
Código PHP:
function bisualise(bal)
    {
    
xmlHttp=ajaxFunction();
    
xmlHttp.onreadystatechange=function()
      {
      if(
xmlHttp.readyState==4)
        {
        
titulo=document.getElementById('titulo');
        
titulo.innerHTML=xmlHttp.responseText;
        }
      }
    
xmlHttp.open("GET","ajax.php?id=" bal,true);
    
xmlHttp.send(null); 
    } 

Aqui le doi el valor a mostrar
Código PHP:
<?php
include("../konekta.php");
if(
$_GET["id"]!=NULL)
    {
    
$select=mysql_query("select texto1 from productos where id=".$_GET["id"]);
    echo 
"<h1>".mysql_result($select,0,0)."</h1>";
    }
?>
La cuestion es que la funcion funciona correctamente, pero lo que quiero hacer es, en lugar de pasar solo un dato a traves de la select, pasar todo el resultado de la misma,(una especia de fetch array), sin tener que usar arrays. La verdad es que no se si se puede hacer.

Para cualquier pregunta o si no me he expresado con claridad dadme un toke

Gracias de nuevo
  #2 (permalink)  
Antiguo 24/04/2007, 10:05
 
Fecha de Ingreso: julio-2003
Mensajes: 71
Antigüedad: 20 años, 9 meses
Puntos: 0
Re: Pasar mas de un dato con AJAX y PHP

hola...

Es muy simple....

<? // siguiendo con tu script php

include("../konekta.php");
if($_GET["id"]!=NULL)
{
$select=mysql_query("select texto1 from productos where id=".$_GET["id"]);
// echo "<h1>".mysql_result($select,0,0)."</h1>";
$result = mysql_query($select);
while ( mysql_fetch_row($result)){
$string_a_publicar .= $row[ campo1 ]."<br>;
$string_a_publicar .= $row[ campo2 ]."<br>;
// lo que quiero indicarte es que armes el html a publicar dentro de la variable $string_a_publicar y listo
}
}
echo $string_a_publicar;
  #3 (permalink)  
Antiguo 24/04/2007, 11:26
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: Pasar mas de un dato con AJAX y PHP

killaton lo que perikobermio quiere decir es que devuelva los valores a la funcion javascript para trabajar desde alli, no en la pagina ajax.php.

Ya le he comentado que se podria hacer una cosa parecida al split de php pero para javascript ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #4 (permalink)  
Antiguo 24/04/2007, 11:48
 
Fecha de Ingreso: julio-2003
Mensajes: 71
Antigüedad: 20 años, 9 meses
Puntos: 0
Re: Pasar mas de un dato con AJAX y PHP

hola ZiTAL...

por ahi me apure a responder sin haber leido bien el tema... pero convengamos que no esta muy claro... al menos para mi...

En fin...

Para pasar varios datos por separado y tomarlos desde javascript... yo hago lo siguiente...

1ro... Generar un XML desde el script PHP.

y desde javascript leerlo de esta forma.

Código HTML:
function handleHttpResponse_onChange_Cbx() {
	
	// en este caso estoy recargando un combo.
            // osea 2 elementos - option y value del combo.
	
  	if (http.readyState == 4) {
	
		var i;  
  		
  		var total = http.responseXML.getElementsByTagName('LINEA').length;
  
  
		results = http.responseText.split(",");
		
  		

    
    	document.getElementById('combo_id').options.length = 0;
  
		document.getElementById('combo_id').options[0]= new Option( '...' ,'0');
		  
  		for(i=0;i<total;i++){
	  		
  			document.getElementById('combo_id').options[i+1]= new Option( http.responseXML.getElementsByTagName('COL1')[i].firstChild.data ,http.responseXML.getElementsByTagName('COL2')[i].firstChild.data);
  			
  		}


  		window.status = '';
  		
  
  		return false;
  		
	}
	
}
salu2
  #5 (permalink)  
Antiguo 24/04/2007, 11:51
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: Pasar mas de un dato con AJAX y PHP

Muchisimas gracias, mañana lo vemos en el curro ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #6 (permalink)  
Antiguo 25/04/2007, 05:06
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: Pasar mas de un dato con AJAX y PHP

el split funciona bien en IE 7, pero en IE 6, casca. Alguien tiene alguna solucion?

Edito:

Pues ahora si funciona, que siga asi ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan

Última edición por ZiTAL; 25/04/2007 a las 05:26
  #7 (permalink)  
Antiguo 25/04/2007, 05:16
 
Fecha de Ingreso: julio-2003
Mensajes: 71
Antigüedad: 20 años, 9 meses
Puntos: 0
Re: Pasar mas de un dato con AJAX y PHP

Seguramente... tiene que ser algun otro problema...

Yo estoy tengo la 6.0 y funciona correctamente.

prueba esta web http://www.gtsneumaticos.com.ar

son 3 listas dependientes que trae lee los datos de un XML generado por un PHP. y la rutina de recarga de combo es la misma que he publicado.

Cualquier cosa ... avisame y te paso el codigo completo.
  #8 (permalink)  
Antiguo 25/04/2007, 07:07
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: Pasar mas de un dato con AJAX y PHP

killaton,a mi me guistaria que me pasaras el código de esos select de la liga que diste, como le hacemos?
__________________
Wow! No se que decir...
  #9 (permalink)  
Antiguo 25/04/2007, 07:21
 
Fecha de Ingreso: julio-2003
Mensajes: 71
Antigüedad: 20 años, 9 meses
Puntos: 0
Re: Pasar mas de un dato con AJAX y PHP

Oka....

te paso el codigo completo...

Código HTML:
<script type="text/javascript" language="JavaScript1.2">

var url_carga_segundo_combo = "accion_carga_segundo_combo.php?id=";

var http = getHTTPObject(); // We create the HTTP Object

//---------------------------------------------------
//-- Genera xmlHttpRequest
//---------------------------------------------------

function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}

//------------------------------ on change del 1er combo

function onChange_primer_combo() {

// obtenemos el id seleccionado del 1er combo
var selObj = document.getElementById('cbx_primero');
var selIndex = selObj.selectedIndex;
var v_id = selObj.options[selIndex].value;

// blanquemos el 2do combo
document.getElementById('cbx_segundo').options.len gth = 0;

http.open("GET", url_carga_segundo_combo + escape(v_id) , true);

http.onreadystatechange = handleHttpResponse_onChange_primer_combo;

http.send(null);



}

// y por ultimo publicamos los resultados

//*---------------------------------------------------------------
//-- Publica Combo PERFIL segun seleccion Combo ANCHOS - PASO II
//----------------------------------------------------------------

function handleHttpResponse_onChange_Combo_Ancho() {



if (http.readyState == 4) {

var i; 

var total = http.responseXML.getElementsByTagName('LINEA').len gth;



results = http.responseText.split(",");




for(i=0;i<total;i++){

document.getElementById('cbx_segundo').options[i+1]= new Option( http.responseXML.getElementsByTagName('COL1')[i].firstChild.data ,http.responseXML.getElementsByTagName('COL2')[i].firstChild.data);

}



window.status = '';


return false;

}

}

</script> 
Bien hasta aqui seria todo tu codigo javascript necesario

Ahora como ultimo vamos con el php...

Creas un php con el nombre accion_carga_segundo_combo.php


este archivo va a publicar un XML por lo tanto debe llevar los tags de xml para identificarlo como tal. Va el codigo.

Código PHP:
<?php
header
('Content-Type: text/xml');
header ("Expires: Fri, 14 Mar 1980 20:53:00 GMT"); //la pagina expira en fecha pasada
header ("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); //ultima actualizacion ahora cuando la cargamos
header ("Cache-Control: no-cache, must-revalidate"); //no guardar en CACHE
header ("Pragma: no-cache"); 

$host "host";
$user "usuario";
$password "password";
$db "base_de_datos";

$link mysql_connect($host$user$password);

mysql_select_db($db,$link);

$sql "SELECT * FROM medida_perfil ";
$sql .= " WHERE campo_en_relacion_con_primer_combo = '$id' ";

$result mysql_query($sql);

if (
mysql_num_rows($result) > 0) {

$string '';
$string '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
$string .= "<MARCAS>\n";

while (
$row mysql_fetch_assoc($result)){

$string .= "<LINEA>\n";
$string .= "<COL1>".$row[id_segundo_combo]."</COL1>\n";
$string .= "<COL2>".$row[descripcion]."</COL2>\n";
$string .= "</LINEA>\n";


}

$string .= "</MARCAS>\n";

echo 
$string;
}

?>
LISTO... de esta forma debe funcionar sin problemas....

PD: perdon por el encolumnamiento.

salu2
  #10 (permalink)  
Antiguo 25/04/2007, 11:36
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: Pasar mas de un dato con AJAX y PHP

hey gracias, io no se usar PHP, trabajo sobre JSP´s pero lo que mas me interesaba era el JS, gracais de nuevo!!!
__________________
Wow! No se que decir...
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 16:34.