Si he entendido bien el problema que tu tienes es que un Proceso AJAX te machaca el otro ya que AJAX es asincrono. De entrada sólo puede correr un proceso aunque hay formas para hacer que puedas crear varios procesos y que estos se vayan ordenando en el tiempo.
Mírate esta estructura y adáptala a tu código.
Código javascript
:
Ver originalvar ajax=null; //vble global
//Funcion que crea el objeto ajax
function objetoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function f1(url,divcontenido){
if (ajax==null) {
objDestino=document.getElementById(divcontenido)
ajax=objetoAjax();
ajax.open("POST", url, true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
objDestino.innerHTML = ajax.responseText
ajax = null
}
}
ajax.send(null)
}else{
setTimeout("f1('"+url+"','"+divcontenido+"')",1)
}
}
function f2(url,divcontenido){
if (ajax==null) {
objDestino=document.getElementById(divcontenido)
ajax=objetoAjax();
ajax.open("POST", url, true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
objDestino.innerHTML = ajax.responseText
ajax = null
}
}
ajax.send(null)
}else{
setTimeout("f2('"+url+"','"+divcontenido+"')",1)
}
}
Fijate bien que creamos una vble global
ajax que nos permite rastrearla y ver en que estado se encuentra.
1º Rastreamos estado de la vble
ajax
a) ajax==null :
a1:Creamos la instacia del objeto XMLHttpRequest y realizamos la petición ajax
a2:ajax.readyState==4, Recibimos la respuesta en ajax.responseText y realizamos acciones oportunas,...
a3:ajax=null, ponemos semaforo en verde
b) ajax != null:
b1:Volvemos a llamar a la función con un retardo a elección del desarrollador. Cuanto menor sea el retardo mayor será el grado de espera activa del proceso. Aqui estaría rebueno un sleep() pero aun no he encontrado la forma y creo que en javascript no existe tal función. Corríjanme si me equivoco.
Espero haberme explicado y que te sirva mi aporte
Ya contarás como te va...
Saludos,