1

私は ajax 呼び出しを実行し、ajax 呼び出しが完了するまでコードが実行されないようにしたいと考えています。

このコードがあるとします

.on('pageloadfailed', function(event){

    //if I move event.preventDefault to here the popup doesn't show. But I only want
    //to prevent the default bahaviour if the condition in the ajaxe response if met.

    $.when(ajax1()).done(function(response){
        if(resposne.success == true){
            event.preventDefault();
        }
    });

    function ajax1() {
        return $.ajax({
            url: "someUrl",
            dataType: "json",
            data:  yourJsonData,            
            ...
        });
    }

    alert("test");

}

アラートは常に発生します。「when」メソッド内のコードが false を返さない場合にのみ発生させたいと思います。

回答ありがとうございます。もう少し詳しく説明します。

私はjqueryモバイルを使用しています。また、ページの読み込みが失敗すると、jqm はユーザーに更新を指示するポップアップを表示します。ただし、実際には自分でエラーを処理したい場合があります。

そのため、pageloadfailed イベントが発生したときに、ajax を介して何かをチェックすることはありませんでした。場合によっては、起こったことを処理しますが、他の場合は、ただ続行したいだけです。

アラートは実際には私のコードにはありません。ポイントを説明するためにそれを使用しようとしていました。

4

4 に答える 4

2

successおよびerrorコールバックを使用します。

  $.ajax({
        url: "someUrl",
        dataType: "json",
        data:  yourJsonData,
        success: function() {
            doSomethingOnSuccess();
        },
        error: function() {
            doSomethingOnError();
        }
    })
于 2013-05-27T13:20:06.233 に答える
2

帰属表示を入れるasyncだけfalse

jQuery ajaxから:

非同期 (デフォルト: true)

タイプ: ブール値

デフォルトでは、すべてのリクエストは非同期で送信されます (つまり、これはデフォルトで true に設定されています)。同期リクエストが必要な場合は、このオプションを false に設定します。

于 2013-05-27T13:14:39.847 に答える
0

あなたがほとんどそこにいるように見える場合:

function ajax1() {
    return $.ajax({
        url: "someUrl",
        dataType: "json",
        data:  yourJsonData,            
        ...
    });
}

$.when(ajax1()).done(function(){
  alert("this should run when your AJAX call is completed. Put your code here");
});
于 2013-05-27T13:20:15.730 に答える
-1

$.when() 関数を使用します。

$.when(ajaxFunction()).done(function(response){
    if(response.text != "false"){ 
        alert("test");
    }
})

function ajaxFunction() {
    return $.ajax({
        url: "someUrl",
        dataType: "json",
        data:  dataInJson,            
    });
}

上記のコードでは、response.text を使用しましたが、これは推測です。応答構造がどのように見えるか正確には覚えていません。自分で確認してください。私が知っているのは、それが 3 つのパラメーターで構成されており、応答のテキストがその 1 つであることだけです。

于 2013-05-27T13:14:32.897 に答える