2016-12-11 1 views
0
$.get('/users/test/' + username, { 
    statusCode: { 
     409:() => { 
     valid = false; 
     alert(username + ' is unavailable'); 
     }, 
     200:() => { 
     valid = true; 
     } 
    } 
    }); 

Auf meinem Server verhalten soll ich sehen:Jquery Ajax status unerwartet

"GET /users/test/asdf HTTP/1.0" 200 0

Aber stattdessen sehe ich jquery das Vergnügen nehmen einige dumme Abfrage-String anhängt:

"GET /users/test/asdf?statusCode%5B200%5D=&statusCode%5B409%5D= HTTP/1.0" 200 0

Jquery erhält eine 200, aber der 409-Code läuft noch. Was ist los?

Antwort

1

Sie übergeben ein Objekt im zweiten Argument, das aussagt, was wie statuscodebasierter Antworthandler aussehen soll.

jQuery macht das nicht so. Das zweite Argument von $.get() ist das optionale Argument data, mit dem Daten an den Server übergeben werden. jQuery serialisiert diese Daten und fügt sie als Abfragezeichenfolge in die Anforderung get ein.


Sie wollten wohl die andere Form dieser Funktion verwenden, die ein Konfigurationsobjekt akzeptiert, dass die URL enthält:

$.get({ 
    url: '/users/test/' + username, 
    statusCode: { 
     409:() => { 
     valid = false; 
     alert(username + ' is unavailable'); 
     }, 
     200:() => { 
     valid = true; 
     } 
    } 
    }); 
+0

Also, was bedeutet das: https://api.jquery.com/jquery.get/ # jQuery-Get-Einstellungen? Offensichtlich scheint es nicht zu funktionieren, wenn ich es versuchte, aber soll es funktionieren, wenn ich ein Objekt als einzigen Parameter übergebe? – dtgq

+0

@DavidTan Das ist ein anderer Aufruf, der nur ein Konfigurationsobjekt benötigt. Indem Sie die URL als Argument und nicht als Teil des Konfigurationsobjekts angeben, haben Sie jQeury angewiesen, einen anderen Aufruf zu verwenden, als Sie beabsichtigt haben. Ich habe meine Antwort aktualisiert, um dies zu berücksichtigen. – Ouroborus

+0

Nun, ich werde verdammt sein ... das ist eigentlich das Erste, was ich ausprobiert habe, aber es hat überhaupt nicht funktioniert, also habe ich versucht, die URL außerhalb des Objekts zu bewegen und es schien teilweise zu funktionieren. Ich musste einen Tippfehler oder etwas in meinem ersten Versuch haben. Danke für die Hilfe. – dtgq