1

ユーザーがリンクをクリックしたときに更新クエリにつながる確認ダイアログがあります。

<div class="ui-bar">
    <a id="confirm" href="#" data-strid="<?php echo $str_info['str_id'] ?>">Confirm</a>
</div>

私がやろうとしているのは、更新クエリを実行してから、更新された情報を含む前のページをリロードすることです。

私はこれを達成したと思っていましたが、何らかのエラーがfirebugでポップアップし続け、ajaxが成功していないようです。エラーは、ページをリロードしたときにのみ発生します...そして、遅延を設定すると、エラーがないため、それが何であるかを読み取ることさえできません。

<script>
        $('#confirm').click(function (){
        var str_id = $("#confirm").data("strid");
        $.ajax({
            type: "POST",
            async: true,
            url: '../../ajax/add_land',
            dataType: 'json', 
            data: { str_id: str_id },
            success: function(){

            }
        });
        $('.ui-dialog').dialog('close')
        setTimeout(
            function() 
            {
                location.reload()
            }, 750);
        return false;
    });
</script>

これを達成する良い方法はありますか?要約すると、更新クエリを実行してから、最後に表示したページ (ダイアログではなく) をリロードして、変更された情報が表示されるようにします。 ../../ajax/add_landPHPにあります。

4

1 に答える 1

1

これを達成するためのより良い方法はいくつかありますが、それは要点を超えています。あなたの場合、これを行う必要があります:

<script>
        $('#confirm').click(function (){
        var str_id = $("#confirm").data("strid");
        $.ajax({
            type: "POST",
            async: true,
            url: '../../ajax/add_land',
            dataType: 'json', 
            data: { str_id: str_id },
            success: function(){
              $('.ui-dialog').dialog('close');            
              location.reload();
            }
        });
        return false;
    });
</script>

ajax 呼び出しが正常に実行されると、成功コールバック内のコードが呼び出されます。Ajax 呼び出しは非同期アクションです。つまり、残りのコードは終了するまで待機しません。この成功のため、コールバックが使用されます。したがって、タイムアウトが必要です。

もう1つ、エラーコールバックもあります。これを使用して、ajaxの問題をデバッグします。

error: function (request,error) {
    alert('Network error has occurred please try again!');
}, 
于 2013-02-27T14:10:49.230 に答える