1

私のアプリケーションを ubuntu と chromium ブラウザーでテストするとすべて問題なく動作しますが、debian と同じ chromium ブラウザーを使用する実稼働マシンに移行すると、常に ajax エラー 0 が発生します。

  • jQuery バージョン 1.7.2
  • jQuery.mobile バージョン 1.1.1
  • Tomcat サーバー

リクエスト:

$.ajax({
    type: 'POST',
    url: "http://localhost:8080/rest/setvalue/1234",
    dataType: "json",
    success: function(objResponse) {
        showMessage("Done");
    },
    error: errorHandler
});

サーバーはリクエストを正しく処理しますが、errorHandler は本番マシンで呼び出されます。

アイデアをありがとう...

フランク

- - - 追加した - - -

コードで表示されるアラート

function errorHandler(xhr, ajaxOptions, thrownError) {
showAlert("Error", "Error: " + xhr.status + "\n" +
       "Message: " + xhr.statusText + "\n" +
       "Response: " + xhr.responseText + "\n" + thrownError); } 

は:

エラー: 0

メッセージ: エラー

応答:

4

1 に答える 1

1

成功関数に括弧がありません。

showMessage("Done"; showMessage("Done"); である必要があります。

これで問題が解決するか確認していただけますか?

編集:

私の意見では、問題はコードに関連していません。おそらく、あなたの場合のAJAXリクエストはクロスドメインリクエストと見なされ、同じオリジンポリシーは失敗します。そのため、Error:0 が表示されます。

(Windows OS で) ケースを再現することができましたが、次のケースで同じエラーが発生します。

  1. マイ Web ページhttp://localhost:7001/MobileApp/index.htmlを開き、 で AJAX を実行しますhttp://www.example.com/MobileApp/test
  2. マイ Web ページhttp://localhost:7001/MobileApp/index.htmlを開き、 で AJAX を実行しますhttp://127.0.0.1:7001/MobileApp/test
  3. Web ページhttp://127.0.0.1:7001/MobileApp/index.htmlを開いて AJAX を実行するhttp://localhost:7001/MobileApp/test
  4. 私の Web ページhttp://192.168.1.2:7001/MobileApp/index.html(192.168.1.2 は私のプライベート IP アドレス) を開き、 で AJAX を実行しますhttp://127.0.0.1:7001/MobileApp/test

上記のケースはクロス ドメイン リクエストと見なされ、ご指摘のエラーが発生しました。

明らかに、ホスト ファイルを構成し、IP アドレスをホスト名などにマッピングした後、要求がクロス ドメインと見なされなかったため、上記の問題の一部が解決されました。

結論として、同一オリジン ポリシーが成功するかどうかを調査することをお勧めします。

ここに画像の説明を入力

于 2012-08-24T07:37:23.920 に答える