Esto me esta volviendo loco. Os cuento:
Quiero que cuando presiono al boton el evento onclick llame a 2 funciones ajax una detras de la otra, pero no se por que solo me ejecuta correctamente la que ponga en segunda posicion. Ya he probado a invertir el orden y solo ejecuta la ultima de las 2 funciones.
Sin embargo si entre dichas funciones pongo un "alert('hola');", sí que ejecuta las 2 funciones correctamente.
Ya he probado a meter un setTimeout en lugar del alert pero no funciona. Ni poniendo 5 segundos ni poniendo 10 segundos de retardo.
¿A que puede deberse???????
Este es el codigo javascript que lleva el boton de la pagina:
Código HTML:
<input type="button" value="OK" onclick="javascript: if(funDatosCorrectos){funAjaxGuardaProd('POST',varArrayImgEscogidas,'guardaProd.php');
funAjaxAnyadeProductoAlPedido('POST',13,varIdProd,'anyadeProductoAlPedido.php','capa1','',1);}else{alert('No se ha hecho bien');}" />
Y aqui os muestro el contenido del fichero "ajaxFuncs.js" que contiene todo lo referente al ajax:
Código:
function fun_ajaxLeerDatos(arg_accion,arg_idObjHtmlContenedor,arg_idObjHtmlPresionado){
switch(var_ObjetoXMLHttpRequest.readyState){
case 4:{//Completed
switch(arg_accion){
case 'anyadeProdAlPedido':{
var objHtmlActualizar;
objHtmlActualizar = document.getElementById(arg_idObjHtmlContenedor);
objHtmlActualizar.innerHTML = var_ObjetoXMLHttpRequest.responseText;
if(arg_idObjHtmlPresionado != ''){fun_activaDesactivaObj(arg_idObjHtmlPresionado);}
break;
}
}
case 'salvaImgEscogidas':{
//No mostramos nada en la pagina web pq con la ejecucion del php asociado a este proceso nos vale
break;
}
}
}
}
}
function fun_ajaxCrearObjeto(){
var var_objAjax;
try{var_objAjax = new XMLHttpRequest();}
catch(e){
try{var_objAjax = new ActiveXObject("Microsoft.XMLHTTP");}
catch(e){
try{var_objAjax = new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){alert("Su navegador no soporta javascript o lo tiene deshabilitado."); var_objAjax=false;}
}
}
return(var_objAjax);
}
var var_ObjetoXMLHttpRequest = fun_ajaxCrearObjeto();
function fun_ajaxAnyadeProductoAlPedido(arg_metodoEnvio,arg_idTipoProducto,arg_idProductoEscogido,arg_urlDestino,arg_idObjHtmlContenedor,arg_idObjHtmlPresionado,arg_cantidadProductoEscogido){
var objHtmlCantidad;
objHtmlCantidad = document.getElementById(arg_cantidadProductoEscogido);
if(arg_idObjHtmlPresionado != ''){fun_activaDesactivaObj(arg_idObjHtmlPresionado);}
var_ObjetoXMLHttpRequest.open(arg_metodoEnvio,arg_urlDestino);
var_ObjetoXMLHttpRequest.onreadystatechange = function(){fun_ajaxLeerDatos('anyadeProdAlPedido',arg_idObjHtmlContenedor,arg_idObjHtmlPresionado);}
var_ObjetoXMLHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
var_ObjetoXMLHttpRequest.send("arg_idTipoProducto=" + arg_idTipoProducto + "&arg_idProductoEscogido=" + arg_idProductoEscogido + "&arg_cantidadProductoEscogido=" + objHtmlCantidad.value);
}
function fun_ajaxGuardaProd(arg_metodoEnvio, arg_arrayImgEscogidas, arg_urlDestino, arg_idObjHtmlContenedor,arg_idObjHtmlPresionado){
var varStringTodasImgEscogidas = '';
//CON ESTE FOR TRANSFORMO EL ARRAY RECIBIDO EN UN STRING PARA PASARSELO A LA PAGINA .PHP
for (i3 in arg_arrayImgEscogidas){
if(i3==0){
varStringTodasImgEscogidas += arg_arrayImgEscogidas[i3] + ',,,,,';
}
else{
varStringTodasImgEscogidas += arg_arrayImgEscogidas[i3] + '<br />';
}
}
var_ObjetoXMLHttpRequest.open(arg_metodoEnvio,arg_urlDestino);
var_ObjetoXMLHttpRequest.onreadystatechange = function(){fun_ajaxLeerDatos('salvaImgEscogidas','','');}
var_ObjetoXMLHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
var_ObjetoXMLHttpRequest.send("arg_stringImgEscogidas=" + varStringTodasImgEscogidas);
}