entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problema con funciones en JavaScript

Hola, tengo implementado este código y no me funciona:
HTML:

    <div class="col-lg-10">                                 
     <select name="idioma" onchange="secciones(this.value)" class="form-control selectize-input espaciar"  id="leng_banderas" onchange="lenguaje_flag()" onkeyup="lenguaje_flag()" <?php if ($editar == true){ echo 'disabled'; }?>>
        <option value="es" <?php echo set_select('idioma', 'es', gidioma('es',$editar,@$seccion->idioma)); ?> >Español</option>
        <option value="en" <?php echo set_select('idioma', 'en', gidioma('en',$editar,@$seccion->idioma)); ?> >Ingles</option>                                  
    </select>                                                                       
  </div>
    <div class="col-lg-10" id="seccion" >
        <select name="seccion" class="form-control selectize-input espaciar" <?php if ($editar == true){ echo 'disabled'; }?>>
              <option value = "1">1</option>
        </select>   
    </div>  

JavaScript:
El problema está en este código de JS pues ya que voy a usar ajax varias veces para optimizar cree un método ajax para la conexion y devolución pero hay algo que no me funciona pues no devuelve nada

function ajax(s,i,u,a,m){
    /*  s - cadena de this.value
        i - id de la etiqueta a modificar por la respuesta del ajax
        u - url destino en busca de una respuesta
        a - Asyncrónico o no
        m - metodo GET o POST*/
    var con;
    if (s==""){
        document.getElementById(i).innerHTML="";
        return;
    }
    if (window.XMLHttpRequest){
    // code for IE7+, Firefox, Chrome, Opera, Safari
        con=new XMLHttpRequest();
    }else{
    // code for IE6, IE5
        con=new ActiveXObject("Microsoft.XMLHTTP");
    }
    con.onreadystatechange=function(){
        if (con.readyState==4 && con.status==200){
            document.getElementById(i).innerHTML=con.responseText;
        }
    }
    con.open(m,u+str,a);
    con.send(); 
}
function secciones(str){
    ajax(str,'"seccion"','"getseccion?i="',true,'"GET"');
}   

2 Respuestas

3votos

white Puntos75880

hay ciertos errores en tu función ajax()

str es una variable local en secciones(), ajax() no la encuentra, deberia quedar el metodo open() asi:

con.open(m, u + s, a);

los parametros de ajax() los estas enviando con comilla adicional.

debería quedar asi:

ajax(str,'seccion','getseccion?i=',true,'GET');

con eso bastaría para que funcione,

saludos!

0voto

dairon comentado

ya lo arreglé me quedó así:

function ajax(s,i,u,a,m){       
    /*  s - cadena de this.value
        i - id de la etiqueta a modificar por la respuesta del ajax
        u - url destino en busca de una respuesta
        a - Asyncrónico o no
        m - metodo GET o POST*/
    var con;
    if (s==""){
        document.getElementById(i).innerHTML="";
        return;
    }
    if (window.XMLHttpRequest){
    // code for IE7+, Firefox, Chrome, Opera, Safari
        con=new XMLHttpRequest();
    }else{
    // code for IE6, IE5
        con=new ActiveXObject("Microsoft.XMLHTTP");
    }
    con.onreadystatechange=function(){
        if (con.readyState==4 && con.status==200){
            document.getElementById(i).innerHTML=con.responseText;
        }
    }    
    con.open(m,u,a);
    con.send(); 
}
function secciones(str){    
    ajax(str,"seccion","getseccion?i="+str,true,"GET");
}

1voto

Leonardo-Tadei Puntos227320

Hola Dairón,

tu función secciones() pasa como segundo parámetro '"getseccion?i="' que es usado para acceder a un elemento vía DOM, pero, además de las comillas sobrantes, no hay en tú HTML ningún elemento con ese ID.

Por esto, más allá de que el AJAX funcione o no, la línea

document.getElementById(i).innerHTML=con.responseText;

no puede hacer nada...

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta