2011-07-14 2 views
1

私は少しreddit画像表示アプリを書いており、ユーザーが有効なサブレッドディジットを入力しても問題なく動作します。しかし、私は存在しないレッドダイのケースを処理しようとしているし、それを把握することはできません。.ajaxとJSONPを使用しているときに失敗するJSONリクエストを処理するにはどうすればよいですか?

これはサーバーからの応答です。しかし、私は.ajaxメソッドでそれを処理することはできません:

GET http://www.reddit.com/r/%3Blk%3Blkl%3B.json?jsonp=process_images&after=&callback=jQuery1510605472848052159_1310668370375&_=1310668370433 404 (Not Found) 

アイデア?

ここではjQuery.getJSON doesn't trigger callbackのようないくつかの提案を試しましたが、基本的に同じエラーが表示され、「jQuery #####が呼び出されていませんでした」という乱数が表示されます。ここ

答えて

2

実際には、jQueryがJSONPに使用しているクロスドメインスクリプトインジェクションの制限です。

jquery-jsonp pluginとそれ以降のバージョンのjQueryは、タイムアウトを実装することでこれを回避します。彼らはまだエラーをトラップすることはできません。

可能であれば、より良い解決方法はCORS (Cross-Origin Resource Sharing)です。

jQueryの新しいバージョンではCORSがサポートされていますが、ブラウザとリモートサイトもサポートしている必要があります。

すべての主要なデスクトップブラウザの最新バージョンは、CORS、バージョン10以降のInternet Explorerのみをサポートしています。

0
$.ajax({ 
    statusCode: { 
    404: function() { 
     //handle the 404 here 
     alert('page not found'); 
    } 
    } 
}); 

は、参考文献である:http://api.jquery.com/jQuery.ajax/

EDIT

ccurrensによって

+0

これは機能しませんでした。 :-( –

+1

jsonpではcronが提供するリンクがjsonpにエラー処理を提供しないと述べているので、jsonpと連携しないため、ccurrensの回答にもいくつかの回避策があります。 – Rafay

1

上記の答えはあなたがクロスドメインを許可するようにサーバーの応答にいくつかのヘッダを追加することができます参照JSONPと文句を言わない仕事あなたがしたい場合...

+0

例へのリンクはありますか? –

+0

https://developer.mozilla.org/en/HTTP_access_control – ChristopheCVB

+0

これはCORSと呼ばれますが、リモートサイトがサポートしている場合にのみ機能します。たとえば、YQLはサポートしていますが、スタックExchange APIはサポートしていません。 – hippietrail

4

別のを参照してくださいthis answer質問。

これは、JQueryのjsonp実装では基本的に制限です。一般的な答えはthis jsプラグインを使用することです。

関連する問題