Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   Problema al ejecutar varias llamadas a AJAX (http://www.forosdelweb.com/f127/problema-ejecutar-varias-llamadas-ajax-481082/)

sanapo 13/04/2007 04:17

Problema al ejecutar varias llamadas a AJAX
 
Hola a todos, tengo un problema con AJAX. Tengo creado un script que al seleccionar un pais de un select me refresca otro select con las ciudades de ese pais. El problema es que la primera vez lo hace bien pero si vuelvo a seleccionar otro pais ya no me responde nada. A que se debe esto? Hay solucion?

Un saludo y gracias de antemano

gvargas 13/04/2007 08:43

Re: Problema al ejecutar varias llamadas a AJAX
 
Por que no muestras tu codigo para darnos una idea de lo que pasa..

Saludos

sanapo 13/04/2007 09:39

Re: Problema al ejecutar varias llamadas a AJAX
 
Aqui les dejo el codigo javascript que he creado para ver donde falla:

function nuevoAjax()
{
xmlhttp = null; //para que funcione en firefox se necesita que la variable sea una variable global

if(window.XMLHttpRequest){
//mozilla compatible & IE7
xmlhttp = new XMLHttpRequest();

} else if (window.ActiveXObject) {
//IE 6
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

if(!xmlhttp) {
alert("Su navegador no soporta AJAX!");
}

return xmlhttp;

}

function updateOptions(option)
{
// Obtendo la capa donde se muestran las respuestas del servidor

var ciudad=document.getElementById("city");
// Creo el objeto AJAX
var ajax=nuevoAjax();
// Coloco el mensaje "Cargando..." en la capa del select
document.getElementById("scity").innerHTML="Cargan do...";
// Abro la conexión, envío cabeceras correspondientes al uso de POST y envío los datos con el método send del objeto AJAX
ajax.open("POST", "process.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send("p="+option);

ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
// Respuesta recibida. Coloco el texto plano en la capa correspondiente
ciudad.innerHTML=ajax.responseText;
}
}
}



HTML


<div class="select_buscar" id="country">
<select name="" size="1" class="select_buscar" dir="ltr">
<option selected="selected">Seleccione el pais</option>
<option value="1" onClick="javascript:updateOptions(1);">España</option>
<option value="2" onClick="javascript:updateOptions(2);">Francia</option>
<option value="3" onClick="javascript:updateOptions(3);">Portugal</option>
</select>
</div>
<div class="select_buscar" id="city"><select name="selectcity" id="selectcity" size="1" class="select_buscar" dir="ltr">
<option id="scity">Seleccionar ciudad</option>
</select></div>

La idea es que al hacer click en uno de los paises, por ejemplo españa, en el segundo select de ciudades se cargan las ciudades proporcionadas por una base de datos con ajax, hasta ahi todo bien, el problema viene cuando decido pulsar otra vez en otro pais como portugal que tiene tambien otras ciudades pero ya no me hace nada, es como si el script dejase de funcionar :S

MaBoRaK 13/04/2007 14:53

Re: Problema al ejecutar varias llamadas a AJAX
 
loading.............

Pues lo haces mal.

Código PHP:

<div class="select_buscar" id="country">
<
select name="" size="1" class="select_buscar" dir="ltr">
<
option selected="selected">Seleccione el pais</option>
<
option value="1" onClick="javascript:updateOptions(1);">España</option>
<
option value="2" onClick="javascript:updateOptions(2);">Francia</option>
<
option value="3" onClick="javascript:updateOptions(3);">Portugal</option>
</
select>
</
div>
<
div class="select_buscar" id="city"><select name="selectcity" id="selectcity" size="1" class="select_buscar" dir="ltr">
<
option id="scity">Seleccionar ciudad</option>
</
select></div

no pongas el evento ONCLICK en los options.
Si quieres un manipular el cambio de tu SELECT debes ponerle el evento ONCHANGE

Código PHP:

<div class="select_buscar" id="country">
<
select name="" size="1" class="select_buscar" dir="ltr" onchange="updateOptions(this.value)">
<
option selected="selected">Seleccione el pais</option>
<
option value="1">España</option>
<
option value="2">Francia</option>
<
option value="3">Portugal</option>
</
select>
</
div>
<
div class="select_buscar" id="city"><select name="selectcity" id="selectcity" size="1" class="select_buscar" dir="ltr">
<
option id="scity">Seleccionar ciudad</option>
</
select></div

Y por favor trata de poner tu código entre etiquetas PHP, CODE, QUOTE o HTML. :p


connection closed.

sanapo 16/04/2007 05:05

Re: Problema al ejecutar varias llamadas a AJAX
 
gracias por corregirme :) pero aun asi, sigo teniendo el problema de que solo me lo ejecuta una sola vez :S


La zona horaria es GMT -6. Ahora son las 01:45.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.