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); }