Felix unreg: Zwei parallele Ajax-Requests

Beitrag lesen

Guten Morgen!

Ich sitz gerade an folgendem Problem: ich möchte vor dem Absenden eines Formulars das Formular mittels Ajax überprüfen. Dafür muss ich zwei Ajax-Requests senden. Da der Server aber für die Antwort seinerseits (teilweise relativ langsame) Webservices ansprechen muss würde ich diese beiden Request gerne parallel absenden. Da ich aber warten muss, bis diese beiden Requests abgesendet sind, um zu sagen, ob die Formulareingaben so gültig sind, kann ich diese nicht einfach asynchron laufen lassen. Also ein Beispiel verdeutlicht mein Problem denk ich am Besten.

(...)
<form (...) onsubmit="return form_submit()">
(...)

Die Requests nacheinander zu senden dürfte kein Problem darstellen (so in der Art):

  
function form_submit(){  
  var ajaxcheck = false;  
  Ajax.Request(  
    "/ajax1",  
    {  
      method: 'get',  
      parameters: '',  
      asynchronous: false,  
      onComplete: function(e){  
        // überprüfe Antwort, ggf setze ajaxcheck auf true  
        ajaxcheck = true;  
    }  
  );  
  if (!ajaxcheck)  
    return false;  
  ajaxcheck = false;  
  Ajax.Request(  
    "/ajax2",  
    {  
      method: 'get',  
      parameters: '',  
      asynchronous: false,  
      onComplete: function(e){  
        // überprüfe Antwort, ggf setze ajaxcheck auf true  
        ajaxcheck = true;  
    }  
  );  
  return ajaxcheck;  
}  

Um diese Requests parallel laufen zu lassen bräuchte ich soetwas.

  
function form_submit(){  
  ajaxcheck = 1;  
  Ajax.Request(  
    "/ajax1",  
    {  
      method: 'get',  
      parameters: '',  
      asynchronous: true,  
      onComplete: function(e){  
        // überprüfe Antwort und schreib Ergebnis in is_valid  
        var is_valid;// true oder false  
        ajaxcheck *= is_valid ? 3 : 2;  
    }  
  );  
  Ajax.Request(  
    "/ajax2",  
    {  
      method: 'get',  
      parameters: '',  
      asynchronous: true,  
      onComplete: function(e){  
        // überprüfe Antwort und schreib Ergebnis in is_valid  
        var is_valid;// true oder false  
        ajaxcheck *= is_valid ? 3 : 2;  
    }  
  );  
  // Diese Stelle ist ungünstig  
  while (ajaxcheck < 4);  
  return (ajaxcheck == 9);  
}  

Diese Lösung kann ich in der Praxis natürlich nicht so verwenden. Hat jemand einen besseren Vorschlag? Zur Not müsste ich beide Checks in einen Request verpacken und den dann synchron abschicken, ist aber in meinem Fall ein wenig unelegant.

Gruß,
Felix