2016-04-29 8 views
1

ich weiß nicht, warum nicht funktioniert ... ich benutze $.ajax für run file.php und übergeben sie (POST) ein wert der eingabe Diese datei .php funktioniert, aber meine Funktion ajax funktioniert nicht:erfolg ajax: wenn ist 200 status code run funktion sonst eine andere funktion

 $.ajax({ 
      type: 'POST', 
      url: 'file.php', 
      data: { email: $('#andressemail').val() }, 
      success: function(data,status){ 
       if(status === '200'){ 
        newmessage(); 
       } 
       else{ 
        erroremessage(); 
       } 
      } 
     }); 

     funtion newmessage(){ 
     alert('ok'); 
     } 

     funtion erroremessage(){ 
     alert('no'); 
     }  

Die file.php funktioniert gut (sie fügt einen Benutzer in meinem Newsletter), aber für $.ajax funktioniert nicht und Statuscode ist nicht 200

Warum?

+0

versuche dies: status == 'erfolg' –

Antwort

3

Versuchen folgende Statuscode, Verwendung xhr.status für Statuscode zu erhalten:

$.ajax({ 
     type: 'POST', 
     url: 'file.php', 
     data: { email: $('#andressemail').val() }, 
     success: function(xml, textStatus, xhr) { 
      alert(xhr.status); 
      if(xhr.status === '200'){ 
       newmessage(); 
      } 
      else{ 
       erroremessage(); 
      } 
     } 
    }); 

    funtion newmessage(){ 
    alert('ok'); 
    } 

    funtion erroremessage(){ 
    alert('no'); 
    }  
+0

dein code ist gott aber "xhr.status === 200" (nicht '200') nein? – Borja

+0

ja ... hast du xhr.status gewarnt, welchen Wert gibt es bei einem Fehler zurück? –

+1

make it: xhr.status === 200 –

1

Der Erfolg Funktion läuft nur, wenn der HTTP-Antwort ist bereits 200. Sie müssen auch die Fehlerfunktion verwenden, die ausgelöst wird, wenn die HTTP-Antwort nicht korrekt beendet wurde. Ändern Sie Ihren Code wie folgt aussehen:

function newmessage(data, textStatus, jqXHR){ 
    alert('ok'); 
} 

function erroremessage(data, textStatus, jqXHR){ 
    alert('no'); 
} 

$.ajax({ 
    type: 'POST', 
    url: 'file.php', 
    data: { email: $('#andressemail').val() }, 
    success: newmessage, 
    error: erroremessage 
}); 
0

Der beste Weg, mit $.ajax umgehen, ist dies:

var _ajax = function(url, data, type){ 
    return $.ajax({ 
     type: type, 
     url: url, 
     data: data, 
    }); 
} 

var data = { email: $('#andressemail').val() }; 

_ajax('file.php', data, 'POST') 
    .success(function(res, statusTitle, xhr){ 
     // res: response from server 
     // statusTitle = 'success', ... 
     // xhr: XHR object, for your case, xhr.status will be 200 
    }); 

Sie .error(function(){...}) zu können, (auch .done);

Verwandte Themen