2016-09-22 6 views
1

$.getJSON()関数でエラーを発生させる可能性があります(application/jsonではなく)。この延期は空のオブジェクトを返します(または完了した)ようです。

thencontent-typeが処理されたハンドラーはどのようにして見つけることができますか? サービスが利用できないときにサーバーがJSONではなくHTMLを返すことができる状況があります。

+0

応答が空であるとき、なぜあなただ​​けのハンドラ内で例外をスローしませんか? –

+0

実際には非常に単純です。ステータスが20xで、応答が$ .parseJSONによって正常に解析された場合、成功したと見なされます。開発者はしばしばそれを返すことを忘れるので、content-typeは無視されます。 .thenでnullをテストし、nullまたは空の文字列(またはサーバを修正する)であれば、約束を拒否する必要があります。 –

答えて

1

$.getJSON()は、応答がtext/htmlの場合に失敗します。この例を参照してください:

$.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

ありがとう、確かに、正しいコンテンツタイプを指定せずにどこか$ .ajaxを使用しているようです。 – yavalvas

関連する問題