
Problema con Javascript - Ajax - Php
Publicado por celina (2 intervenciones) el 08/04/2015 16:38:24
Buenos dias:
Mi problema es el siguiente..
Tengo una función js que a través de ajax realiza una consulta a la base de datos. Mi función ajax llama a una función "mostrarBusqueda(JSON)" para mostrar el resultado de la búsqueda. JSON es una variable que tiene varios registros, pueden ser libros o revistas.
Dentro de la función "mostrarBusqueda(JSON)" tengo un for que recorre la variable JSON y, según el registro sea libro o revista, debe armar una visualización diferente.
Si es libro, armo dentro de la variable texto el código html para mostrar:
texto +='<br /><a class="link" style="padding:4px; background-color:#069; color:white; float:left" href=# onclick="cargarCatalogoVerMarc('+codigo+', \''+idioma+'\', \''+material+'\');"> <strong>Mas Datos </strong></a> <a class="link" style="padding:4px; background-color:#069; color:white; float:right" href=# onclick= "listarEjemplares('+codigo+','+biblioteca+', \''+autor1+'\', \''+titulo+'\', \''+mencionEdicion+'\', \''+publicacion+'\');"> <strong>Disponibilidad</strong></a><br /> <br /><\hr /></td></tr>';
Si es revista, debo buscar el registro relacionado a la revista, es decir, llamo a una funcion "buscarSManalitica(codigo)" que me devuelve el registro relacionado y ahi puedo armar la variable texto con los datos de ambos registros relacionados.
Esta funcion "buscarSManalitica", a travesde ajax busca el registro relacionado. Cuando intente devolver el registro buscado, me devolvía "undefined", por lo tanto tuve que buscar otra forma de devolverlo. Lo que hice fue guardar el resulado en una variable global "dataArray" y poner una bandera "estadoArray" en true cuando la asignación se complete, para así saber que ya podía acceder al valor.
Sino es true, con setTimeout demoro unos segundos.
De esta forma, no funciona bien, salvo que ponga el alert : alert("alert para que funcione la primera vez")". Poniendo este alert, funciona como deberia funcionar.
Por favor alguien tiene idea de como solucionar esto? No encuentro la forma, ya que por como esta programado debo hacer las subconsultas y generar el html de esta forma.
Mi problema es el siguiente..
Tengo una función js que a través de ajax realiza una consulta a la base de datos. Mi función ajax llama a una función "mostrarBusqueda(JSON)" para mostrar el resultado de la búsqueda. JSON es una variable que tiene varios registros, pueden ser libros o revistas.
Dentro de la función "mostrarBusqueda(JSON)" tengo un for que recorre la variable JSON y, según el registro sea libro o revista, debe armar una visualización diferente.
Si es libro, armo dentro de la variable texto el código html para mostrar:
texto +='<br /><a class="link" style="padding:4px; background-color:#069; color:white; float:left" href=# onclick="cargarCatalogoVerMarc('+codigo+', \''+idioma+'\', \''+material+'\');"> <strong>Mas Datos </strong></a> <a class="link" style="padding:4px; background-color:#069; color:white; float:right" href=# onclick= "listarEjemplares('+codigo+','+biblioteca+', \''+autor1+'\', \''+titulo+'\', \''+mencionEdicion+'\', \''+publicacion+'\');"> <strong>Disponibilidad</strong></a><br /> <br /><\hr /></td></tr>';
Si es revista, debo buscar el registro relacionado a la revista, es decir, llamo a una funcion "buscarSManalitica(codigo)" que me devuelve el registro relacionado y ahi puedo armar la variable texto con los datos de ambos registros relacionados.
Esta funcion "buscarSManalitica", a travesde ajax busca el registro relacionado. Cuando intente devolver el registro buscado, me devolvía "undefined", por lo tanto tuve que buscar otra forma de devolverlo. Lo que hice fue guardar el resulado en una variable global "dataArray" y poner una bandera "estadoArray" en true cuando la asignación se complete, para así saber que ya podía acceder al valor.
Sino es true, con setTimeout demoro unos segundos.
De esta forma, no funciona bien, salvo que ponga el alert : alert("alert para que funcione la primera vez")". Poniendo este alert, funciona como deberia funcionar.
Por favor alguien tiene idea de como solucionar esto? No encuentro la forma, ya que por como esta programado debo hacer las subconsultas y generar el html de esta forma.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function buscarSManalitica(codigo,){
var opciones = {
method:'post',
parameters:'codigoSMA='+codigo,
onComplete: function(t) {
JSON_SM = (eval('(t.responseText)'));
JSON_SM = JSON_SM.parseJSON('('+t.responseText+')');
dataArray = JSON_SM;
estadoArray = true;
}
}
str = 'busquedaWeb/busqWeb.php';
new Ajax.Request(str, opciones);
var check = function(){
alert("alert para q funcione de una vez");
if(estadoArray == false){
setTimeout(check, 5000);
}
else{
return "true";
}
}
return check();
}
Valora esta pregunta


0