2017-01-23 6 views
2

JavaScriptコードでREST APIへのAJAXコールを作成しています。呼び出しは基本的にJSONファイルを取得します。Ajaxコールの約束が解決されない

$.ajax(ajaxObj).then(function(response) {}).catch(function(err) {}); 

ので、ネットワークモニタは、このコールのステータス200を示すが、JSONの応答は次のエラーを示しています:

SyntaxError:JSON.parse: bad control character in string literal at line x and column y of the JSON data.

は基本的に応答が無効なJSONであるAJAX呼び出しは、このようなものです。 debuggerを使用すると、コントロールがステータス200にもかかわらずブロック then()に入らず、コントロールがcatchブロックに入っていることに気付きました。それはなぜですか、どうすれば解決できますか?

+2

ajaxコールのコードを表示できますか? – lakshay

+0

ステータス200 OKと応答も取得中ですので、ajaxコールが進行しています。だから私はajax呼び出しに間違って何もないと思います。 – RKS10222

答えて

1

ajaxObjのJSON文字列があり、JSON構文にエラーがあるというエラーが表示される場合、JSONが正しく解析されたかどうかを確認する必要があります。サーバーは200コードを返しても、無効なJSONを本体内に返すことができます。

わかりませんが、おそらくこれが役立ちます:返品するJSON hereを貼り付けてください。

+1

はい、無効なJSONを返しています。 – RKS10222

+0

無効なJSON応答のため、ajax約束が解決されていません。それは、JSONファイルがAPI内で変更されない限り、私はそれについて何もできないということですか? – RKS10222

+0

API応答を変更するアクセス権がない場合は、答えは「いいえ」です。 1つの 'ハッキーな方法'がありますが、実際に動作するかどうかはわかりません。それは他の方法で応答をキャッチしようとすることであり、あなたの自己を解析します。しかし、言及されているように、これは非常に非常に悪い習慣です。あなたが本当にしなければならない限り、これをやろうとはしないでください。 – Lesotto

0

AJAX呼び出しが無効なJSONを返し、制御はその後、()ブロックを入力しないだろうと仮定。エラーを処理するには、done()メソッドとfail()メソッドを使用する必要があります。

$.ajax("url").done(() => { 
     //success 
    }).fail(() => { 
     //error 
    }) 

エラーの中で、約束を解決することができます。それが役に立てば幸い。

関連する問題