0

jquerypostコマンドを使用してサーバーにログインし、トークンを取得する JavaScript スクリプトがあります。次のようなブロックtryでコードをブロックにラップしました。catch

catch (error)
{
  alert(error.message); 
}

私のコードは正常に動作しますが、徹底的にテストするために、URL が次のようになるように意図的にプロトコルを変更しました。

"htt://some.domain:8080/jsonrpc"

私のコードはエラーをキャッチせず、アラートを表示しません。代わりに、Chrome コンソールに次のエラーが表示されます。

XMLHttpRequest は、htt://some.domain:8080/jsonrpc を読み込めません。クロス オリジン リクエストは、プロトコル スキーム (http、data、chrome、chrome-extension、https、chrome-extension-resource) でのみサポートされています。

コンソールのエラーではなく、ある種の不正な URL 例外が予想されます。

不正なパスワードなどのその他の意図的なエラーの結果、キャッチされる例外が発生します。

ありがとう

4

1 に答える 1

3

Ajax は非同期だからです。エラーは、try/catch ブロックの外側で発生します。

このクラスのエラーは、XMLHttpRequest でステータスが に変わることで検出できます0。(ただし、このステータス コードは他のいくつかのエラー状態もカバーしているため、正確には言えません)。

errorjQuery ajax に渡すことができるハンドラーは、ステータスが 0 のときに起動します。

于 2015-04-28T14:25:30.993 に答える