Foros del Web » Programando para Internet » Javascript »

Ayuda con función que no ejecuta despues de la llamada AJAX

Estas en el tema de Ayuda con función que no ejecuta despues de la llamada AJAX en el foro de Javascript en Foros del Web. Hola tengo en una select box (coche) una funcion (getModel(this.value) que toma el valor y lo manda a un archivo ajax que a su vez ...
  #1 (permalink)  
Antiguo 07/06/2010, 17:21
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 15 años, 1 mes
Puntos: 2
Ayuda con función que no ejecuta despues de la llamada AJAX

Hola tengo en una select box (coche) una funcion (getModel(this.value) que toma el valor y lo manda a un archivo ajax que a su vez traje los modelo de esa marca.

Pero tengo unas funciones que valida las select box, el problema es, la funcion que debería validar la select generada despues la llamada ajax, no se ejecuta.

En la consola de Firebug, puede ver el valor seleccionado, pero la función no tiene ningún poder sobre su id.
  #2 (permalink)  
Antiguo 08/06/2010, 05:37
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Ayuda con función que no ejecuta despues de la llamada AJAX

Hola

Difícil saber que está pasando sin ver el código.

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 08/06/2010, 09:26
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Ayuda con función que no ejecuta despues de la llamada AJAX

Cita:
Iniciado por Adler Ver Mensaje
Hola

Difícil saber que está pasando sin ver el código.

Suerte
Gracias por responder: aquí esta el AJAX
Código PHP:
function getXMLHTTP() {
    var 
xmlhttp=false;  
    try{
    
xmlhttp=new XMLHttpRequest();
    }
    catch(
e){       
    try{            
    
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(
e){
    try{
    
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(
e1){
    
xmlhttp=false;
      }
     }
  }
   return 
xmlhttp;
}

function 
getModel(idCar) {      
    var 
strURL="http://localhost/root509dir/Includes/model.php?idCar="+idCar;
    var 
req getXMLHTTP();
    if (
req) {
          
req.onreadystatechange = function() {
          if (
req.readyState == 4) {
          if (
req.status == 200) {
         
document.getElementById('modelCont').innerHTML=req.responseText;
     } else {
       
alert("There was a problem while using XMLHTTP:\n" req.statusText);
       }
    }               
}           
    
req.open("GET"strURLtrue);
    
req.send(null);
    }       

La primera lista dependiente se puede ver la función getModel que manda que llama el AJAX:
car.php
Código PHP:

<?php
$QRcars 
mysql_query("SELECT *FROM car ORDER BY car_make") or die(mysql_error());
if(
mysql_num_rows($QRcars)>0){?>
<select name="cars" id="cars" onchange="getModel(this.value);"><option value="0">-------------------</option>
<?php while($cars mysql_fetch_array($QRcars)){?>
<option value="<?php echo htmlentities($cars['id_car']);?>">
<?php echo htmlentities($cars['car_make']);?></option>
<?php }?>
</select>       
<?php }?>
<span id="modelCont">
<?php echo htmlentities(PUB_AN_MOD); ?><em>*</em>
<select name="model" id="model">
<option value="0">---------</option>
</select>
</span>
E el archivo que genera la lista dependiende después de la llamada async:
model.php
Código PHP:
if(isset($_GET['idCar'])){
    $idCar = mysql_real_escape_string($_GET['idCar']);
}
$modelQR = mysql_query("SELECT *FROM model WHERE from_make = '$idCar'") or die(mysql_error());?>
<?php echo htmlentities(PUB_AN_MOD); ?><em>*</em>
<select name="carmodel" id="carmodel">
<option value="0">----------------</option>
<?php while($model mysql_fetch_array($modelQR)){?>
<option value="<?php echo htmlentities($model['id_model']);?>">
          <?php echo htmlentities($model['car_model']);?></option>
<?php }?>
</select>
La función que deberia ejecutarse si el usuario no selecciona nada:
Ejecuta sobre los elementos no dinámicos. (Que no hayan generado por AJAX)
Código PHP:
... var model = $("#carModel");
.... 
model.change(validModel);

function 
validModel(){
     if(
model.val() == 0){
            
model.addClass("errorJS");
            return 
false;
            }else{
            
model.removeClass("errorJS");
            return 
true;
            }  
    } 
La clase errorJS anade un border rojo alrededor del elemento si la función return false;

Última edición por jartaud; 08/06/2010 a las 09:39 Razón: Info sobre la classe errorJS
  #4 (permalink)  
Antiguo 08/06/2010, 12:57
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Ayuda con función que no ejecuta despues de la llamada AJAX

Ya lo resolví, el problema era que el evento ready no se ejecuta cuanto se manipula el DOM otravéz (Cuando aparece la segunda selectbox después de llamar AJAX).

Así que yo tuvé que definir to fuera del evento. Ose a hago todo lo que hicé para los elementos ya "LISTOS" (DOM ready)

Etiquetas: ajax, llamada
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 13:16.