Foros del Web » Programando para Internet » Javascript »

funciona solo con alert javascript

Estas en el tema de funciona solo con alert javascript en el foro de Javascript en Foros del Web. Hola nuevamente. Utiliza mucho este foro para consultar problemas y realmente es un aporte. Hoy no he encontrado nada en la web que solucione mi ...
  #1 (permalink)  
Antiguo 13/02/2013, 17:48
 
Fecha de Ingreso: junio-2012
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 11 años, 10 meses
Puntos: 0
funciona solo con alert javascript

Hola nuevamente. Utiliza mucho este foro para consultar problemas y realmente es un aporte. Hoy no he encontrado nada en la web que solucione mi problema, solo explicaciones respecto de "asincronico", etc, etc pero ningun truquito.

Ahi va....
ejecuto varias funciones en un onchange de un select
<select name="pcto" id="pcto" style="width:200px" class="cuerpo" type "text" onChange="mando_pcto(),mando_pcto2(),mando_pcto3() " >

Estas se invocan mediante un típico
<script src="conecto.js" language="javascript" type="text/javascript"></script>

En conecto.js ejecuto las funciones y envio "pcto" a unos progrmas.php en donde utilizo la variable "pcto"

Aca una de las funciones: (son todas iguales a excepción de xx.php y el div que cargo)

function mando_pcto()
{
alert("VERIFIQUE ADICIONALES")
var Texto = document.getElementById('pcto').value;
var Resultados = document.getElementById('resultado_adicionales');
ajax = Buscador();
ajax.open("GET","Buscar_adicionales.php?pcto="+Tex to);
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4)
{
Resultados.innerHTML = ajax.responseText;
}
}
ajax.send(null)
}

Ahora el problema, solo funcionan cuando le coloco un alert a cada una, de lo contrario no se ejecutan.

Leí que se debe a que el lenguaje es asincrónico pero no un truquito o algo para poder solucionar el tema.

Agradezco opiniones, comentarios, lo que sea. Desde ya Graciassssssssssss
  #2 (permalink)  
Antiguo 13/02/2013, 21:38
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: funciona solo can alert javascript

A ver, que queré decir exactamente, que si les pones los alert, lo que sigue

Código:
var Texto = document.getElementById('pcto').value;
 var Resultados = document.getElementById('resultado_adicionales');
 ajax = Buscador();
 ajax.open("GET","Buscar_adicionales.php?pcto="+Texto);
 ajax.onreadystatechange = function() 
{
 if (ajax.readyState == 4) 
{
 Resultados.innerHTML = ajax.responseText;
 }
 }
 ajax.send(null)
se ejecuta?

No será que lo único que se ejecuta es el alert() y hay algo equivocado en el resto de tus funciónes.
Por lo pronto Buscador(); no está visible

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 14/02/2013, 03:12
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: funciona solo can alert javascript

Creo que es porque tal y como lo tienes definido se ejecuta la función de forma síncrona.

Lo del alert es porque para la ejecución del script mientras se activa, y por eso le da tiempo a la función ajax a devolver el resultado.

var Texto = document.getElementById('pcto').value;
var Resultados = document.getElementById('resultado_adicionales');
ajax = Buscador();
function handler() {
if (ajax.readyState==4) {
Resultados.innerHTML = ajax.responseText;
console.log('test para probar esto con firebug en firefox'); // solo si usas eso
};
ajax.open("GET","Buscar_adicionales.php?pcto="+Tex to);
ajax.onreadystatechange = handler;
ajax.send(null);
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #4 (permalink)  
Antiguo 14/02/2013, 06:16
 
Fecha de Ingreso: junio-2012
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: funciona solo can alert javascript

Gracias por las respuestas señores.
emprear: Buscador() esta definido, es estandar por lo que nolo coloqué. Cada function me desliega un div en una sola página. Con los alert los despliega, sin los alert no. Por lo tanto funcionan pero como mencioné solo con los alert.

Fuzzylog voy a probar tu código y te aviso. De todas maneras voy a publicar la solución si la obtengo ya que como mencioné hay varias dudas respecto de este mismo tema y ninguna respuesta (al menos yo no he encontrado ninguna)
  #5 (permalink)  
Antiguo 14/02/2013, 06:54
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: funciona solo can alert javascript

que ajax necesita el tiempo que le proporciona la demora provocada por un alert???


Buscador() esta definido??

quizá esté definido, pero tenga un error, de todas maneras como NO está explícita, vamos a inventar un poco

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. var ajax;
  10. function Buscador(){
  11.  var xmlHttp=null;
  12.  if (window.ActiveXObject)
  13.    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  14.  else
  15.    if (window.XMLHttpRequest)
  16.      xmlHttp = new XMLHttpRequest();
  17.  return xmlHttp;
  18. }
  19.  
  20. function mando_pcto(){
  21.  
  22.  
  23. //alert("VERIFIQUE ADICIONALES");
  24. ajax = Buscador();
  25. var Resultados = document.getElementById('resultado_adicionales');
  26. ajax.open("GET","hola.html");
  27. ajax.onreadystatechange = function()
  28. {
  29. if (ajax.readyState == 4){
  30. Resultados.innerHTML = ajax.responseText;
  31. }
  32. }
  33. ajax.send(null)
  34. }
  35.  
  36. //]]>
  37.  
  38.  
  39. </head>
  40.     <button onclick="mando_pcto();">llamar fnc</button>
  41. <div id="resultado_adicionales"></div>
  42. </body>
  43. </html>

hola.html

Código HTML:
Ver original
  1.     hola
  2. </html>

Funciona con ó sin alert()

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 14/02/2013, 08:52
 
Fecha de Ingreso: junio-2012
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: funciona solo can alert javascript

Gracias nuevamente emprear, la función Buscador() es exácamente como tu la indicas. El tema es el siguiente utilizando tu propio código, si incorporo mando_pcto2() y agrego lo indicado en rojo solo funciona una sin alert:

Otra cosa, no se afecte, el código html no tengo en otra pagina y llamo solo los div.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<script type="text/javascript">
//<![CDATA[
var ajax;
function Buscador(){
var xmlHttp=null;
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
else
if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
return xmlHttp;
}

function mando_pcto(){


//alert("VERIFIQUE ADICIONALES");
ajax = Buscador();
var Resultados = document.getElementById('resultado_adicionales');
ajax.open("GET","hola.html");
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4){
Resultados.innerHTML = ajax.responseText;
}
}
ajax.send(null)
}


function mando_pcto2(){


//alert("VERIFIQUE ADICIONALES");
ajax = Buscador();
var Resultados = document.getElementById('resultado_adicionales2');
ajax.open("GET","hola.html");
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4){
Resultados.innerHTML = ajax.responseText;
}
}
ajax.send(null)
}


//]]>
</script>


</head>
<body>
<button onclick="mando_pcto(),mando_pcto2();">llamar fnc</button>
<div id="resultado_adicionales"></div>
<div id="resultado_adicionales2"></div>
</body>
</html>
  #7 (permalink)  
Antiguo 14/02/2013, 09:28
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: funciona solo con alert javascript

Si, ya veo, hacelo asi

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3.  <html xmlns="http://www.w3.org/1999/xhtml">
  4.  <head>
  5.  <title>titulo</title>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7.  
  8. <script type="text/javascript">
  9.  //<![CDATA[
  10. var ajax;
  11. function Buscador(){
  12. var xmlHttp=null;
  13. if (window.ActiveXObject)
  14. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  15. else
  16. if (window.XMLHttpRequest)
  17. xmlHttp = new XMLHttpRequest();
  18. return xmlHttp;
  19. }
  20.  
  21. function mando_pcto(){
  22.  
  23.  
  24. //alert("VERIFIQUE ADICIONALES 1");
  25. ajax = Buscador();
  26. var Resultados = document.getElementById('resultado_adicionales');
  27. ajax.open("GET","hola.html");
  28. ajax.onreadystatechange = function()
  29. {
  30. if (ajax.readyState == 4){
  31. Resultados.innerHTML = ajax.responseText + '1ª función';;
  32. mando_pcto2();
  33. }
  34. }
  35. ajax.send(null)
  36. }
  37.  
  38.  
  39. function mando_pcto2(){
  40.  
  41.  
  42. //alert("VERIFIQUE ADICIONALES");
  43. //ajax = Buscador();
  44. var Resultados = document.getElementById('resultado_adicionales2');
  45. ajax.open("GET","hola.html");
  46. ajax.onreadystatechange = function()
  47. {
  48. if (ajax.readyState == 4){
  49. Resultados.innerHTML = ajax.responseText + '2ª función';
  50. }
  51. }
  52. ajax.send(null)
  53. }
  54.  
  55. //]]>
  56.  </script>
  57. </head>
  58.  <body>
  59.  <button onclick="mando_pcto();">llamar fnc</button>
  60.  <div id="resultado_adicionales"></div>
  61.  <div id="resultado_adicionales2"></div>
  62.  </body>
  63.  </html>
SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 14/02/2013, 10:27
 
Fecha de Ingreso: junio-2012
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: funciona solo con alert javascript

Excelente emprear, eternamente agradecido, he podido solucionar el problema gracias a tu desinteresada cooperación.

Para la posteridad y para aquellos que han tenido o tienen un problema similar la solución entregada por emprear me ha dado la clave para solucionar el problema.

La clave estaba en "rellamar las funciones superiores nuevamente". Adjunto el código para que lo pueda utilizar otra persona. Noten lo de colores para mayor claridad

function mando_pcto()
{
var Texto = document.getElementById('pcto').value;
ajax = Buscador();
var Resultados = document.getElementById('resultado_adicionales');
ajax.open("GET","Buscar_adicionales.php?pcto="+Tex to);
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4)
{
Resultados.innerHTML = ajax.responseText;
}
}
ajax.send(null)
}
function mando_pcto2()
{
var Texto = document.getElementById('pcto').value;
ajax = Buscador();
var Resultados = document.getElementById('adicionales_optativos');
ajax.open("GET","Otros_adicionales.php?pcto="+Text o);
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4)
{
Resultados.innerHTML = ajax.responseText;
mando_pcto();
}
}
ajax.send(null)
}

function mando_pcto3()
{
var Texto = document.getElementById('pcto').value;
ajax = Buscador();
var Resultados = document.getElementById('despliego_primas');
ajax.open("GET","Primas.php?pcto="+Texto);
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4)
{
Resultados.innerHTML = ajax.responseText;
mando_pcto();
mando_pcto2();
}
}
ajax.send(null)
}

Etiquetas: Ninguno
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 14:11.