Programación Web y Scripting > PHP

 Ajax

(1/3) > >>

RadicalEd:
Hola chicos de SoloCodigo, estoy dandole poco a poco al AJAX y ahora me surge un problema que no he podido encontrar como solucionarlo; lo que pasa es que según tengo entendido (por lo poco que sé), por medio del "id" que se le asigne a una etiqueta esta recibira el valor que uno haya pasado a consultar en el server por medio del php asignado; mi problema es que si trato de asignarlo a un "INPUT TEXT" no me funciona, pero si lo hago con un "DIV" sí, como puedo para que el valor devuelto por el php me funcione, el código de todo es el siguiente:

--- Código: PHP ---//Para realizar la consulta (producto_liccom.php)    <select name='listpre' onChange="traerDatos(frmproducto.listpre.value, frmproducto.codigo_item.value)">      <option value='0' SELECTED>Escoja Lista</option>      <option value='L1'>Lista 1</option>      <option value='L2'>Lista 2</option>      <option value='L15'>Lista 15</option>      <option value='LP'>Lista Promociones</option>    </select>                 //Aclaro que los dos no pueden tener el mismo id al hacer la consulta por que sino no se imprimen los datos en ninguno de los 2    <div id="lstpre">Datos</div> //En este se cargan los datos    <input style="text-align: right" size="6" type="text" name="lstpre" id="lstpre">//En este no se cargan por ser un input text  
--- Código: Javascript ---//La función y el objeto ajax (ajax.js)//Tomado del Internet, no me acuerdo la páginafunction nuevoAjax(){     /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por    lo que se puede copiar tal como esta aqui */    var xmlhttp=false;     try     {         // Creacion del objeto AJAX para navegadores no IE        xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");     }    catch(e)    {         try        {             // Creacion del objet AJAX para IE             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");         }         catch(E) { xmlhttp=false; }    }     if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }      return xmlhttp;  } function traerDatos(listaEsc, itemEsc){    // Obtengo la capa donde se muestran las respuestas del servidor    var capa=document.getElementById("lstpre");    // Creo el objeto AJAX    var ajax=nuevoAjax();    // Coloco el mensaje "Cargando..." en la capa    capa.innerHTML="Cargando...";    // 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", "ajax.php", true);    ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    ajax.send("codigo="+itemEsc+"&listapre="+listaEsc);     ajax.onreadystatechange=function()    {         if (ajax.readyState==4)         {           // Respuesta recibida. Coloco el texto plano en la capa correspondiente           capa.innerHTML=ajax.responseText;         }     } }  
--- Código: PHP ---//El que genera la consulta (ajax.php)<?php    include '../configuration.php';   $listapre = $_POST['listapre'];   $codigo = $_POST['codigo'];      $query = "SELECT * FROM tblicitador_productos WHERE codigo LIKE '".$codigo."'";   $result = mysql_query($query) or die(mysql_error());    if ($row=mysql_fetch_array($result))   {     switch($listapre)      {       case 'L1':                 echo $elpre = $row[10];                 break;       case 'L2':                 echo $elpre = $row[9];                 break;       case 'L15':                 echo $elpre = $row[11];                 break;       case 'LP':                 echo $elpre = $row[2];                 break;     }   }?> 
Alguna explicación para este problema
Gracias Chao

RadicalEd:
Me respondo a mi mismo :P, probando probando con funciones JavaScript normales como cuando uno hace paso de datos a un control de un formulario, lo pudé hacer de esta manera:

--- Código: Javascript --- if (ajax.readyState==4){   // Respuesta recibida. Coloco el texto plano en la capa correspondiente   capa.innerHTML=ajax.responseText;   document.fromproducto.lstpre.value = ajax.responseText;} 

RadicalEd:
Ahora tengo otro problema :wacko: si quito el <div id="lstpre">, no me toma los datos en el control input text; alguien sabe a que se debe???

shadow_rev:
Edo, tienes 2 elementos con el mismo id (el div y el campo), cosa que no se puede hacer, ya que un id tiene que ser único. Supongo que te estará produciendo un error que dice "property innerHTML not found" o algo por el estilo, y aborta el programa sin escribirte el valor. Ponle otro id al input donde escribes el resultado, creo que con eso es suficiente.

:suerte:

RadicalEd:

--- Cita de: "shadow_rev" ---Edo, tienes 2 elementos con el mismo id (el div y el campo), cosa que no se puede hacer, ya que un id tiene que ser único. Supongo que te estará produciendo un error que dice "property innerHTML not found" o algo por el estilo, y aborta el programa sin escribirte el valor. Ponle otro id al input donde escribes el resultado, creo que con eso es suficiente.

:suerte:
--- Fin de la cita ---
Al parecer no leiste la parte que dice:

--- Código: PHP ---# //Aclaro que los dos no pueden tener el mismo id al hacer la consulta por que sino no se imprimen los datos en ninguno de los 2     <div id="lstpre">Datos</div>  //En este se cargan los datos     <input style="text-align: right" size="6" type="text" name="lstpre" id="lstpre"> //En este no se cargan por ser un input text Sin embargo esa parte ya quedo, lee el 3 post y veras cual ha sido mi último problema, aunque lo soluciones ocultando la etiqueta div.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa