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

Problema con Ajax, PHP y MySQL

Estas en el tema de Problema con Ajax, PHP y MySQL en el foro de Frameworks JS en Foros del Web. Saludos a Todos. Tengo un problemilla con un ejemplo que saque de internet. Os pongo el ejemplo y mas abajo os explico que me pasa: ...
  #1 (permalink)  
Antiguo 21/09/2005, 16:28
 
Fecha de Ingreso: septiembre-2005
Ubicación: Vejer de la Fra, Cádiz
Mensajes: 83
Antigüedad: 18 años, 7 meses
Puntos: 0
Problema con Ajax, PHP y MySQL

Saludos a Todos.

Tengo un problemilla con un ejemplo que saque de internet. Os pongo el ejemplo y mas abajo os explico que me pasa:

Pagina HTML


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Ciudad del Codigo Postal usando XmlHttpRequest</title>
<script language="javascript" type="text/javascript">

var url = "getCityState.php?param="; // La direccion del archivo .php y el parametro que se le pasa
var http = getHTTPObject(); // Esto crea el Objeto HTTP
var enProceso = false; //Variable para saber si existe otro proceso en ejecucion

function handleHttpResponse() {
if (http.readyState == 4) {
if (http.responseText.indexOf('invalid') == -1) {
// Use the XML DOM to unpack the city and state data

var xmlDocument = http.responseXML;
var city = xmlDocument.getElementsByTagName('city').item(0).f irstChild.data;
var state = xmlDocument.getElementsByTagName('state').item(0). firstChild.data;

document.getElementById('city').value = city;
document.getElementById('state').value = state;
enProceso = false;
}

/*results = http.responseText.split(",");
document.getElementById('city').value = results[0];
document.getElementById('state').value = results[1];
enProceso = false;*/
//document.write ('da igual');
}
}

function updateCityState() {
if (!enProceso && http) {
var zipValue = document.getElementById("zip").value;
http.open ("GET", url + escape(zipValue), true);
http.onreadystatechange = handleHttpResponse;
enProceso = true;
http.send(null);
}
}

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();
xmlhttp.overrideMimeType("text/xml");
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}

</script>
</head>
<body>
<form action="post">
<p>
ZIP code:
<input type="text" size="5" name="zip" id="zip" onblur="updateCityState();" />
</p>
City:
<input type="text" name="city" id="city" />
State:
<input type="text" size="2" name="state" id="state" />
</form>
</body>
</html>


Pagina PHP


<?php
/**
* Conecta a la Base de Datos
* Devuelve Falso si falla la conexion.
* Asegurate de cambiar $database_name (nombre de la base de datos.
* $database_username (nombre de usuario), and
* $database_password (contraseña de usuario)
* valores de las propiedades de tu base de datos
**/

function db_connect() {
$database_name = 'codigopostal'; // Pon el nombre de la base de datos
$database_username = 'root'; // Pon el nombre de tu usuario mysql
$database_password = ''; // Pon la contraseña de tu usuario mysql
$result = mysql_pconnect('localhost',$database_username, $database_password);
if (!$result) return false;
if (!mysql_select_db($database_name)) return false;
return $result;
}
$conn = db_connect(); // Conecta a la Base de Datos
if ($conn) {
$zipcode = $_GET['param']; // Es el codigo postal que recoge
$query = "select * from zipcodes where zipcode = '$zipcode'";
$result = mysql_query($query,$conn);
$count = mysql_num_rows($result);
if ($count > 0) {
$city = mysql_result($result,0,'city');
$state = mysql_result($result,0,'state');
}
}
if (isset($city) && isset($state)) {
// $return_value = $city . "," . $state;
$return_value = "<?xml version='1.0' standalone='yes'?><zip><city>".$city."</city><state>".$state."</state></zip>";
}
else {
$return_value = "invalid".",".$_GET['param']; // Include Zip for debugging purposes
}
header('Content-Type: text/xml');
echo $return_value; // This will become the response value for the XMLHttpRequest object
?>



El problema es q en la pagina HTML no entra en la condicion que os he puesto en negrita: "if (http.responseText.indexOf('invalid') == -1) {...}", por lo que no me puede mostrar los datos recogidos de la pagina PHP. Gracias.

PD -> El ejemplo esta igual que el que vi en la pagina web, pero nose porque no me funciona. Gracias de nuevo.
  #2 (permalink)  
Antiguo 21/09/2005, 17:16
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
proba modificar

var xmlDocument = http.responseXML;

por esto

var xmlDocument = http.responseXML.documentElement;


La unica variación que encuentro qon la forma que yo uso es esa (aunque no soy un experto en la materia)


PD: Probaste que resultado te devuelve tu pagina en PHP sin la intervención de ajax?
__________________
by Capitán Buscapina
.
  #3 (permalink)  
Antiguo 21/09/2005, 20:06
 
Fecha de Ingreso: septiembre-2005
Ubicación: Vejer de la Fra, Cádiz
Mensajes: 83
Antigüedad: 18 años, 7 meses
Puntos: 0
no, sigue sin funcionar.

Si, el archivo php lee bien de la base de datos y muestra los reslutados bien.
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 00:07.