2010-11-25 7 views
3

Ich habe diese Ajax überprüfen, ob der Name gefunden wird oder nofound. Es funktioniert gut, wenn Daten gefunden werden, aber wenn es Nofound zurückgibt, muss ich es erneut senden, um es auszulösen.jQuery Ajax überprüfen und Formular abschicken, immer zweimal einreichen, wenn Ajax zurückkehren Nofound

Hat jemand einen Vorschlag oder eine bessere Lösung dafür?

$('#formletter').submit(function() { 
    var name = $('#name').val(); 

    if ($.formLoading != false) { 
     $.ajax({ 
     type: 'POST', 
     url: "submit_ajax_contents.php", 
     data: "namecheck="+name, 
     success: function(data) { 
      if(data == 'nofound'){ 
      $.formLoading = false; 
      $('#formletter').submit(); 
      }else{ 
      alert('found'); 
      $.formLoading = true; 
      } 
     } 
     }); 
    return false; 
    } else { 
    return true; 
    } 

    }); 

}); 

Vielen Dank :)

Antwort

1

Sie können einen nicht-Asynchron-Ajax-Aufruf zu tun: (Ich habe diesen Code nicht testen)

$('#formletter').submit(function(event) { 
    var name = $('#name').val(); 
    var found = false; 
    $.ajax({ 
     async: false, 
     type: 'POST', 
     url: "submit_ajax_contents.php", 
     data: "namecheck="+name, 
     success: function(data) { 
      if(data == 'found') 
       found = true; 
     } 
    }); 
    if (found) 
     event.preventDefault(); 
}); 
+0

Beachten Sie, dass, wenn der Ajax-Aufruf fehlschlägt, Es wird angenommen, dass "gefunden" ist "falsch" (dh der Wert wird nicht geändert) – cambraca

+0

Und natürlich sollten Sie dem Benutzer einige Hinweise geben, dass die Namensüberprüfung durchgeführt wird, so dass der Benutzer nicht ausflippt wenn ein paar Sekunden vergangen sind und nichts passiert zu sein scheint. – cambraca

+0

Ja, das schien den Job zu erledigen, danke :) – Joannes