Tengo un problemilla con un ejemplo que saque de internet. Os pongo el ejemplo y mas abajo os explico que me pasa:
<!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>
<?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.