2016-09-22 2 views
1

Ist es möglich, $.getJSON() Funktion erzwingen, um einen Fehler zu erzeugen, wenn wir versuchen, HTML mit ihm zu bekommen (nicht application/json). Es sieht so aus, als ob dieses deferred nur ein leeres Objekt zurückgibt (oder erledigt).

Wie können wir in then Handler finden, die content-type wurde als Reaktion verarbeitet? Ich habe die Situation, wenn Server HTML anstelle von JSON zurückgeben kann, wenn der Dienst nicht verfügbar ist.

+0

warum Sie nicht nur eine Ausnahme in dem Handler werfen, wenn die Antwort dann leer ist? –

+0

Es ist eigentlich ziemlich einfach, wenn der Status 20x ist und die Antwort von $ .parseJSON erfolgreich geparst werden kann, wird es als erfolgreich angesehen. Es ignoriert den Inhaltstyp, weil Entwickler oft vergessen, es zurückzugeben. Sie sollten auf Null in .then testen und die Versprechung veranlassen, zurückzuweisen, wenn es null oder leerer String ist (oder den Server repariert) –

Antwort

1

$.getJSON() schlägt fehl, wenn die Antwort text/html ist. Sehen Sie folgendes Beispiel:

$.getJSON('http://httpbin.org/html') 
 
    .then(() => console.log('success'),() => console.log('error'))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Danke, es scheint definitiv, dass wir $ .ajax irgendwo verwenden, ohne den richtigen Inhaltstyp anzugeben. – yavalvas

Verwandte Themen