2

Ajax 呼び出しを実行するにはハイパーリンクが必要です。それが完了したら、ハイパーリンクの標準アクションを実行します。

<a href="afterwards.html" target="_blank" onclick="return CallFirst();">Link</a>

JavaScript 関数は を呼び出し$.ajax()、成功または失敗を待ってから true を返します。

function CallFirst()
{
    $deferred = $.ajax({
                    type: "POST",
                    url: url,
                    data: data
                });

    // **todo** WAIT until the Ajax call has responded.

    // Return true, which makes the <a> tag do it's standard action
    return true;
}

コードは$.ajaxが成功するのを待ってから、 から true を返す必要がありますCallFirst()

$deferred.when()すぐに終了します。どうすれば待たせることができますか?

4

3 に答える 3

9

asyncプロパティを設定するだけですfalse

$deferred = $.ajax({
                type: "POST",
                url: url,
                data: data,
                async: false
            });

しかし、実際にはコールバックを使用することをお勧めします。

于 2013-10-07T10:45:02.923 に答える
1

async を false に設定できますが、コールバックを使用することをお勧めします。

.done(function( success) {
    if (success) {
      doSomeThingElseNow();
    }
  });
于 2013-10-07T10:50:29.133 に答える
0

jquery のビルドイン ajax コールバックを使用します。

$.ajax({
    url: '/path/to/file',
    type: 'default GET (Other values: POST)',
    dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
    data: {param1: 'value1'},
})
.done(function() {
    console.log("success");
})
.fail(function() {
    console.log("error");
})
.always(function() {
    console.log("complete");
});
于 2013-10-07T12:16:04.513 に答える