1

コードに小さな問題があります。loadDataAJAXページを必要とする関数があります。この結果により、私のページにチェックボックスが表示されます。(これで結構です)

チェックボックスをクリックしたときに、AJAXリクエストを実行して、データベースの値を変更したいと思います(これも問題ありません)。

問題は次のとおりです。チェックボックス(チェックされていない)をクリックすると、チェックボックスがオンになり、ajaxが実行されます。ajaxが実行されると、ボックスはすべてオフになります。

いくつかのテストを行ったところ、Ajaxリクエストのチェックボックスがオンになっている場合にのみ問題が発生することがわかりました。

注:$(selector).attr('checked'、true)とfalseを追加しようとしましたが、何も機能しません。

Jquery(Ajaxの実行時に問題がloadData関数にあり、チェックボックスがオフになっているだけです):

 $(document).ready(function()  {
    $('#TableContainer .RCkbox').live('click',function(){

        var idOperation = 550;
        if($(this).is(":checked")){

            $.ajax({
                type: "POST",
                url: "includes/ajax/OperationRapprochement.php",
                data: "sessionId=" + <?php echo $User->getId(); ?> + "&AccountNumber=" + <?php echo $compte->getId(); ?> + "&idOperation=" + idOperation + "&action=rapproche",
                success: function(msg)
                {
                    //TODO  

                }
            });
        }
        else{

                $.ajax({
                type: "POST",
                url: "includes/ajax/OperationRapprochement.php",
                data: "sessionId=" + <?php echo $User->getId(); ?> + "&AccountNumber=" + <?php echo $compte->getId(); ?> + "&idOperation=" + idOperation + "&action=derapproche",
                success: function(msg)
                {
                      //TODO

                }
            });
       }
    });


    function loadData(){
    $.ajax({
            type: "POST",
            url: "includes/ajax/test.php",
            data: "sessionId=" + <?php echo $User->getId(); ?> + "&AccountNumber=" + <?php echo $compte->getId(); ?>,
            success: function(msg){
                    $("#TableContainer").ajaxComplete(function(event, request, settings){
                           $("#TableContainer").html(msg);
                    });
            }
        });
    }

    loadData();
});

私はあなたに実際の問題を示すためにビデオを作りました:http://youtu.be/nG9XF2f4M18

ご協力いただきありがとうございます。

4

1 に答える 1

0

**コメントで得た情報から回答が更新されました**

ファイルに問題が見つかりました。

重要なのは、イベント「.ajaxComplete」を使用することです。ドキュメントを正しく読むと、ajax呼び出しが行われるたびにイベントが呼び出されると書かれています。

したがって、チェックボックスをクリックしたときにajax呼び出しを行うため、結果を受け取ると、loadData関数のコールバックが再度呼び出され、再度実行$("#TableContainer").html(msg);されます。つまり、コンテンツが再び置き換えられます。そのため、チェックボックスがオフになります。

コードで変更する必要があるのは、イベント.ajaxCompleteが不要なため、イベントを削除することだけです。

これはあなたのコードです:

function loadData(){
    $.ajax
    ({
        type: "POST",
        url: "includes/ajax/test.php",
        data: "number=" + number,
        success: function(msg)
        {
            $("#TableContainer").ajaxComplete(function(event, request, settings) {
                $("#TableContainer").html(msg);
            });
        }
    });
}

そのはず:

function loadData(){
    $.ajax
    ({
        type: "POST",
        url: "includes/ajax/test.php",
        data: "number=" + number,
        success: function(msg)
        {
                $("#TableContainer").html(msg);
        }
    });
}

他の2つのajaxリクエストについても同じです。成功したコードは、結果を受け取ったときに実行されます。

于 2012-08-14T20:38:27.890 に答える