4

jQuery AJAX は 2 つのリクエストを送信しているようです。時間に基づいて2要素認証方法を使用しているため、2番目のリクエストが失敗しているため、元のリクエストは「失敗」しています。

1 つ目はポスト リクエストです。これは問題ありませんが、次に GET リクエストがあり、これは問題があります。

クエリを生成するために使用している JavaScript は次のとおりです。

$('#form').live('submit', function(event) {
    var target = $('#ajax');
    var url = '/ajax/user/authenticateLevel3';
    $.ajax({
        type: "POST",
        url: url,
        data: $('#form').serialize(),
        dataType: 'json',
        success: function(data, status) {
            $.getJSON(url, function(data) {

                if (!data.resultCode) {
                $('#ajax').html($.base64.decode(data.html));
                $('#ajax').modal();
                } else {
                    location.reload();
                }

            });
        }
    });
    event.preventDefault();
});

これを回避する方法はありますか?

4

3 に答える 3

5

これは、2 つの ajax 呼び出し (.ajaxおよび.getJSON)を実行しているためです。

代わりにこれを試してみてください ( の代わりにドキュメント イベントの委譲を使用します.live)。

$(document).on('submit', '#form', function(event) {
    var target = $('#ajax');
    var url = '/ajax/user/authenticateLevel3';
    $.ajax({
        type: "POST",
        url: url,
        data: $('#form').serialize(),
        dataType: 'json',
        success: function(data, status) {
            if (!data.resultCode) {
                $('#ajax').html($.base64.decode(data.html));
                $('#ajax').modal();
            } else {
                location.reload();
            }
        }
    });
    event.preventDefault();
});
于 2012-12-24T16:43:49.027 に答える
2

2 件のリクエストを送信しています。1 つは .ajax を使用し、もう 1 つは .getJson を使用します。

.getJson リクエストを削除します。.ajax に dataType プロパティが渡されない場合、jquery は応答タイプを推測しようとします。変換を強制するために、dataType を json として指定することもできます。成功コールバックの「データ」パラメータは、これらのオプションの両方で JavaScript オブジェクトに変換する必要があります。

于 2012-12-24T16:50:44.090 に答える
0

getJSON別の ajax メソッドによって返されたデータを処理するためではなく、サーバーから JSON を取得するための AJAX メソッドです。取り除くだけです。

$('#form').live('submit', function(event) {
    var target = $('#ajax');
    var url = '/ajax/user/authenticateLevel3';
    $.ajax({
        type: "POST",
        url: url,
        data: $('#form').serialize(),
        dataType: 'json',
        success: function(data, status) {
            if (!data.resultCode) {
            $('#ajax').html($.base64.decode(data.html));
            $('#ajax').modal();
            } else {
                location.reload();
            }
        }
    });
    event.preventDefault();
});

に切り替えると述べたので.on、構文は次のようになります。

$(parent).on('submit', '#form', function(event) {
    /*
     * ...
     */
});

whereparentは の最も近い静的親要素です#form

于 2012-12-24T16:46:17.483 に答える