0

こんにちは、私は ajax クエリに問題がありますが、応答が 4090 文字以上の長さの場合、jQuery ajax 関数は失敗し、エラー関数を実行します。これが私のコードです:

function loadContent( e) {

currentActiveSlide = e;

    var parametros = {
            "action"    : 'slideContent',
            "rel"       : e.attr('rel'),
    };

    jQuery.ajax({
                data:  parametros,
                url:   template_url + '/ajax.php',
                type:  'post',

                success:  function (response, e) {
                   //What ever...
                },
                error: function(xhr, status, error) {
                    alert(error);
        }
    });
}

応答データが何であるかは関係ありません。「a」文字を 4,000 回以上追加してみましたが、エラー変数が空でエラー関数が起動されます。

なにか提案を?- 前もって感謝します!

追加データ:

たとえば、応答として文字「a」を 4k 回以上送信した場合、「aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...」の場合、関数は機能しません。4k 未満の場合はそのまま機能します。動作するはずですが、4k文字を超えると動作しないため、応答変数などに制限があると思います。

4

2 に答える 2

0

jQuery ajax docsから:

成功

タイプ: Function( PlainObject data, String textStatus, jqXHR jqXHR ) リクエストが成功した場合に呼び出される関数。この関数には 3 つの引数が渡されます。dataType パラメータに従ってフォーマットされた、サーバーから返されたデータ。ステータスを説明する文字列。jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト。jQuery 1.5 の時点で、success 設定は関数の配列を受け入れることができます。各関数が順番に呼び出されます。これは Ajax イベントです。

jQuery(e).html(..)ステータス文字列はセレクターではないため、間違っていると思いeます(成功関数の範囲内にあるため、e以前に持っていた変数にアクセスできません-同じ名前の別の変数を定義しました)。

currentActiveSlide.html(..)代わりに使用する必要があります。

于 2013-07-06T19:19:35.520 に答える
0
function loadContent(e) {
    currentActiveSlide = e;
    var parametros = {
            "action"    : 'slideContent',
            "rel"       : e.attr('rel')
    };
    jQuery.ajax({
            data:  parametros,
            url:   template_url + '/ajax.php',
            type:  'post'
    }).done(function(data, textStatus, jqXHR) {
            alert(jqXHR.responseText);
    }).fail(function(jqXHR, textStatus, errorThrown) {
            alert(errorThrown);
    });
}

スクリプトに加えられた変更を確認します。parametros変数宣言に不要なコンマがあります。また、メソッドsuccesserrorメソッドは、レイアウトした形式で応答しません。

ただし、あなたの要点-この質問は、次の質問に非常によく似ています: ajax応答データの最大サイズは何ですか? . そしてこれ:クエリ文字列の最大可能長は?

于 2013-07-06T19:35:49.683 に答える