web-dev-qa-db-ja.com

jQuery Ajax-ステータスコード0?

何らかの理由で、私の dashcode 開発されたアプリケーションはAJAXを停止し、ステータスコード0を返しました。これはあなたに起こりましたか?なぜこれが起こるのか誰にも分かりますか?

133
tarnfeld

別のケース:

AJAX呼び出しを送信し、AJAXを取得する前にブラウザの更新がトリガーされた場合、0のステータスコードを取得することが可能です。応答。 AJAX呼び出しはキャンセルされ、このステータスを取得します。

106
mnk

私の経験では、次の場合にステータス0が表示されます。

  • クロスサイトスクリプティングを行う(アクセスが拒否される)
  • 到達不能なURLのリクエスト(タイプミス、DNSの問題など)
  • それ以外の場合、リクエストはインターセプトされます(広告ブロッカーを確認してください)
  • 上記のように、リクエストが中断された場合(ブラウザはページから移動します)
94
Langdon

おそらく dashcode とは無関係ですが、jQueryとAJAXステータスコード0をグーグルで検索すると、このStackOverflowの質問が出てくるので、実行中の人には答えを投げると思いました他の場合にはこの問題に。私は最近この問題に遭遇し、次のリンクが有用であることがわかりました。

18
justkt

<button onclick="">submit</button>を使用する場合の同じ問題。次に<input type="button" onclick="">を使用して解決しました

8
Rafi

ステータスコード0は、要求されたURLに到達できないことを意味します。 http:// something/somethinghttps:// something/something に変更すると、うまくいきました。ステータスコードが0の場合、IEは「permission denied」というエラーをスローしますが、他のブラウザーはいけません。

7
Jagadeesh

重要なのは、wwwで始まる特定のドメインを持つCookieで定義されたセッション内でもajax呼び出しが失敗する可能性があることです。その後、phpスクリプトを呼び出します。 wwwなし。 URL内のプレフィックスは、呼び出しも失敗し、その逆も同様です。

6
nuxxxx

この記事 助けてくれました。私はAJAX経由でフォームを送信し、return falseを使用するのを忘れていました(私のajaxリクエストの後)。

3
Martin Vseticka

「偶発的な」フォームの送信は、まさに私が抱えていた問題でした。 FORMタグを完全に削除しただけで、問題は解決したようです。みんなありがとう!

2
Insider Pro

Jqueryでステータスコード0が表示される別のケースが見つかりました。何らかの理由でXMLHttpRequestが定義されていない場合、このエラーが発生します。

明らかに、これは通常Web上では発生しませんが、Firefoxの夜間ビルドのバグにより、作成中のアドオンでこれが発生しました。 :)

2
starwed

私も同じ問題を抱えていましたが、それはブラウザーによるXSS(クロスサイトスクリプティング)ブロックに関連していました。サーバーを使用して動作させることができました。

ご覧ください: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status

2
Ricardo Rivaldo

これはajax status 0をグーグルで表示したときに表示されるため、無駄な時間を費やしたヒントを残したかった... ajaxを使用して、PhilのREST_Controller for CodeigniterであるPHPサービスを呼び出していた(これが何か関係があるかどうかはわかりません)、ステータス0、レディ状態0を取得し続け、私を夢中にさせていました。私はそれをデバッグしていて、成功するメッセージを終了する代わりにエコーして戻ることに気付きました。最後に、デバッグをオフにして試してみましたが、うまくいきました。 PHPを使用してxDebugデバッガーが何らかの形で応答を変更したようです。 PHPデバッガを使用している場合は、デバッガをオフにして、それが役立つかどうかを確認してください。

2
michael

私の場合、それはDjangoサーバーをhttp://127.0.0.1:8000/の下で実行しているが、http://localhost:8000/にajax呼び出しを送信したことが原因です。同じアドレスにマップすることを期待していても、ローカルホストにリクエストを送信していないことを確認しません。

1

同様の問題-jquery ajax呼び出しのステータスコード0-があり、診断に1日かかりました。誰もまだこの理由に言及していないので、私は共有すると思いました。

私たちの場合、問題はHTTPサーバーのクラッシュでした。 PHPのバグがApacheを吹き飛ばしていたため、クライアント側では次のようになりました。

mirek@toccata:~$ telnet our.server.com 80
Trying 180.153.xxx.xxx...
Connected to our.server.com.
Escape character is '^]'.
GET /test.php HTTP/1.0
Host: our.server.com

Connection closed by foreign Host.
mirek@toccata:~$ 

test.phpにはクラッシュするコードが含まれていました。サーバーから返されたデータはありません(ヘッダーでもない)=> ajax呼び出しはステータス0で中止されました。

1
jmper

私にとって、この問題の原因は、相当な応答データ(数十キロバイト以上)を含むPOST操作を何らかのセキュリティ上の脅威として扱うホスティング会社(Godaddy)でした。 1分間に6つ以上発生した場合、ホストは次の1分間にPHPリクエストに応答したPOSTコードの実行を拒否しました。ホストが代わりに何をしたかは完全にはわかりませんが、tcpdumpを使用すると、ブラウザからのTCPリクエストへの応答としてPOSTリセットパケットが送信されます。これにより、jqXHRオブジェクトで返されるhttpステータスコードが0になりました。

操作をPOSTからGETに変更すると、問題が修正されました。 Godaddyがこの制限を課す理由は明らかではありませんが、ホストを変更するよりもコードを変更する方が簡単です。

1
emrys57

この場合、ページリンクは https に http。ユーザーがログインしていても、AJAXでの読み込みはできませんでした。

0
Andy In NC

私の場合、これはSafari Mobileでのみ得られていました。問題は、相対URL(whatever.php)ではなく完全なURL( http://example.com/whatever.php )を使用していたことです。ただし、これは意味がありません。私のサイトは http://example.com でホストされているため、XSSの問題になることはありません。 Safariはhttp部分を見て、残りのURLを検査せずに自動的に安全でないリクエストとしてフラグを立てると思います。

0
Raúl Bojalil

私はこのエラーの原因を知っていると思います。

Google chromeには、Google chrome拡張機能のddos攻撃を防ぐための組み込み機能があります。

Ajaxリクエストが継続的に500以上のステータスエラーを返すと、リクエストの調整が開始されます。

したがって、次のリクエストでステータス0を受け取ることができます。

0
Anonymous

記載されている問題の最も愚かな理由で賞を獲得しようとしています。

電話を忘れる

xmlhttp.send(); //yes, you need this pivotal line!

はい、まだ「open」コールからステータスリターンがゼロになっていました。

0
Gordon Rouse

トラブルシューティングで、このAJAX xmlhttpRequest.status == 0は、クライアント呼び出しがまだサーバーに到達していないが、クライアント側の問題のために失敗したことを意味することがわかりました。サーバーからの応答の場合、ステータスは1xx/2xx/3xx/4xx/5xx HTTP応答コードのいずれかでなければなりません。以降、トラブルシューティングはCLIENTの問題に焦点を当てるものとし、インターネットネットワーク接続の停止、または上記の@Langdonによって説明された接続のいずれかである可能性があります。

0
Panini Luncher

リクエストを行っている間、ブラウザコンソールを観察します。「Same Origin Policyでhttp ajaxのリモートリソースの読み取りが許可されていない....理由:corsヘッダー 'access-control-allow-Origin'がありません」応答ヘッダーに「Access-Control-Allow-Origin」を追加します。 exa:Javaでは、response.setHeader( "Access-Control-Allow-Origin"、 "*")のように設定できます。ここで、応答はHttpServletResponseです。

0
Mahadev Mandale

私の場合、ajax設定でurl: ''を設定すると、ie8でステータスコード0になります。つまり、そのような設定を許容しないようです。

0
blurrcat