19

Firefox を使用している場合、私が持っている ajax 投稿要求が、firebug で中止されたと報告されています。ajax の投稿は IE と Chrome で正常に動作します。クロスドメイン リクエストではありません。フィドラーを使用して問題を調べてみましたが、フィドラーがWebトラフィックをキャプチャしている場合(httpsを復号化するオプションが設定されている場合)、投稿は機能します。投稿の問題は、私のローカル開発環境では作成できません. フィドラーの実行中に投稿が機能する理由は何ですか? それを機能させる方法についてのアイデアが得られるかもしれません。

$.ajax({
            type: 'POST',
            url: '/Save',
            data: JSON.stringify(dataset),
            datatype: "html",
            contentType: "application/json",
            success: function (data, textStatus, jqXHR) {
                //alert("success");
            },
            error: function (jqXHR, textStatus, errorThrown) {
                //alert("error");
            }
        });

また、この ajax リクエストは多くのメソッドによって呼び出され、最大のデータセットが送信された場合にのみ失敗します。

4

8 に答える 8

12

お試しのみ

async: false

ajaxオプションでは、同じ問題がありました。

于 2012-11-09T12:47:28.983 に答える
5

基本的な ajax オプションのいくつかを明示的に設定 (および変更) することから始めます。

 cache: false,
 timeout: 60000,
 async: false
于 2012-11-02T14:03:17.423 に答える
3

サーバーが返すコンテンツの種類。JSON または HTML コンテンツ。サーバー コンテンツでcharset=utf-8を使用していますか。サーバーの応答が JSON contentType である必要があることを確認してください。別の推測では、コードからdatatype: "html"を削除します。あなたの運を試してみてください。

サーバーがjsonの手段を返す場合は、以下を試してください

$.ajax({
            type: 'POST',
            url: '/Save',
            data: JSON.stringify(dataset),
            datatype: "json",
            contentType: "application/json",
            success: function (data, textStatus, jqXHR) {
                //alert("success");
            },
            error: function (jqXHR, textStatus, errorThrown) {
                //alert("error");
            }
        });

datatype: "json", contentType: "application/json"は理にかなっています

于 2012-11-08T19:27:35.850 に答える
2

イベント ハンドラーからこの AJAX 要求を送信する場合 (例: 送信ボタンのクリック)、ブラウザーの既定の動作 (フォームの送信) を防止して、2 つの HTTP 要求が発生し、最初の要求が中止されるまで待ちます。

これを達成するために使用できますe.preventDefault()

IE8でこの問題が発生しました。

于 2012-11-13T14:17:35.537 に答える
1

サーバーの最大投稿サイズ設定を確認してください。

于 2012-11-08T14:54:28.797 に答える
1

私も同様の問題を抱えており、上記のアイデアのいくつかを試しました。最終的に「中止」状態を次のように修正しました。

  1. e.preventDefault();およびreturn false;ボタンのイベント ハンドラへの追加
  2. メソッドのパラメーターに追加datatype: "json", contentType: "application/json",します。jQuery.ajax

手がかりのためにみんなに感謝します。

于 2015-02-09T13:56:28.227 に答える
0

これは、クロス ドメインの問題であるか、リクエストが非同期であるために Firefox がリクエストを中止する問題です。クロスドメインの場合、リクエストの発信元と Web サービスで何が許可されているかを確認できます。CORS を読む必要があるかもしれません。

クロスドメインでない場合は、リクエストが非同期であることに問題があります。同期するように変更するだけです。

于 2015-01-28T17:48:26.877 に答える