2016-06-26 6 views
0

AJAX-Aufruf an ein nicht vorhandenes Datenbankelement vornehmen. Dann sieht der Handler wie folgt aus:XMLHttpRequest.response wirklich null oder nicht

if (xhr.readyState === 4 && xhr.status === 200 && xhr.response !== null) { 
    console.log('response type is ' + typeof xhr.response); // string 
    console.log('response is ' + xhr.response);    // null 
    // rest of the handler// 
{ 

Die Frage ist, warum mein Handler den Block ausgeführt wird (es geht immer zu trösten und log-String und null), wenn ich erklärte es nur zu tun, wenn Antwort nicht null ist ?

+2

Nun, wenn es wirklich sagt "Antworttyp ist String" und "Antwort ist null", dann ist die Antwort eindeutig der String '" null "'. –

+0

Anstatt mit einer 'console.log' Taschenlampe im Dunkeln herumzustolpern, schlage ich vor, das Licht mit dem in Ihrem Browser integrierten, leistungsfähigen Debugger einzuschalten. Setzen Sie einen Haltepunkt innerhalb dieses Blocks und überprüfen Sie den Wert von 'xhr.response', während der Code am Haltepunkt angehalten ist. –

+1

Sehen Sie sich auch die Registerkarte Netzwerk der Entwicklerwerkzeuge an und untersuchen Sie die Rohdaten der HTTP-Antwort. – Quentin

Antwort

2

Nun, wenn es wirklich

 
response type is string 
response is null 

Anmeldung ... dann eindeutig die Antwort ist die String"null".

+0

Vielen Dank für das Feedback, einschließlich der obigen Kommentare. Es erleichtert meine Einführung in JS. Würde für die Antwort stimmen und genug Reputation haben. – Ito

+0

@Ito: Schön, dass das geholfen hat. Wenn sie die Frage beantwortet hat, sollten Sie die Antwort "akzeptieren", indem Sie auf das Häkchen daneben klicken. [mehr hier] (/ help/jemand-Antworten). Sie können Antworten auf Fragen, die Sie stellen, akzeptieren, unabhängig von Ihrem Ruf. Viel Spaß mit Ihrem JavaScript! –

Verwandte Themen