duangaoe9401 2016-01-26 14:26
浏览 53
已采纳

Ajax不止一次地打电话

I have one problem with my ajax code. It is called more than once. My php code is next :

(While loop where I get all results from a database. I pasted only a modal and a dropdown menu because everything else works fine)

$rezPet = mysqli_query($kon, "SELECT * FROM pets WHERE user_id = ". $userId ." ORDER BY id DESC");
while($redPet = mysqli_fetch_assoc($rezPet)){


......
<div id=\"confirmBox-". $redPet["id"] ."\" class=\"modal fade bs-example-modal-xs\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"mySmallModalLabel\">
    <div class=\"modal-dialog modal-sm\">
      <div class=\"modal-content\">
            <div class=\"modal-header\">
                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button>
                <h4 class=\"modal-title\" id=\"myModalLabel\"><b>". $redPet["name"] ."</b> is gevonden?</h4>
            </div>
            <div class=\"modal-body\">
                Bent u zeker dat <b>". $redPet["name"] ."</b> gevonden is?
            </div>
            <div class=\"modal-footer\">
                <button id=\"btnFoundCancel-". $redPet["id"] ."\" type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\"><i class=\"fa fa-ban\"></i>  Cancel</button>
                <button id=\"btnFoundConfirm-". $redPet["id"] ."\" type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\"><i class=\"fa fa-floppy-o\"></i>  Ja! Ga verder</button>
            </div>
     </div>
    </div>
</div>

.
.
.
<div id=\"dropdown-". $redPet["id"] ."\" class=\"col-md-6 col-xs-12\" style=\"padding-right:10px;z-index:99999999;". $showHideDropdown ."\">
        <!-- Split button -->
        <div class=\"btn-group pull-right\">
        <button type=\"button\" id=\"dataTitle\" data-title=\"Beheer informatie over uw dier\" class=\"btn btn-success btn-xs\"><i class=\"fa fa-pencil-square-o\"></i></button>
        <button type=\"button\" id=\"dataTitle\" data-title=\"Beheer informatie over uw dier\" class=\"btn btn-success btn-xs dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">
        <span class=\"caret\" style=\"margin-top:0;\"></span>
        <span class=\"sr-only\">Toggle Dropdown</span>
        </button>
        <ul id=\"drpDown-". $redPet["id"] ."\" class=\"dropdown-menu\">
                <li class=\"col-lg-12\">
                    <button id=\"dataTitle btnFound-". $redPet["id"] ."\" class=\"btnFound btn btn-success col-lg-12 col-sm-12 col-md-12 col-xs-12 btn-sm\" data-title=\"Klik hier als uw dier gevonden is\" data-target=\"#confirmBox-". $redPet["id"] ."\" data-toggle=\"modal\"><i class=\"fa fa-home\"></i>  Gevonden</button>
                </li>
                <div style=\"clear:both;\"></div><li role=\"separator\" class=\"divide5\"></li>
                <li class=\"col-lg-12\">
                    <form action=\"dier-toevoegen.php\" method=\"POST\">
                        <input type=\"hidden\" name=\"changeID\" value=\"". $redPet["id"] ."\">
                        <button id=\"dataTitle\" class=\"btn btn-info col-lg-12 col-sm-12 col-md-12 col-xs-12 btn-sm\" data-title=\"Klik hier om de informatie over uw dier te wijzigen\" type=\"submit\"><i class=\"fa fa-pencil\"></i>  Wijzigen</button>
                    </form>
                </li>
                <div style=\"clear:both;\"></div>
                <li role=\"separator\" class=\"divider\"></li>
                <li class=\"col-lg-12\">
                    <button id=\"dataTitle btnVerwijderen-". $redPet["id"] ."\" class=\"linkDelete btn btn-danger col-lg-12 col-sm-12 col-md-12 col-xs-12 btn-sm\" data-title=\"Klik hier om uw dier te verwijderen\" href=\"#\"><i class=\"fa fa-trash\"></i>  Verwijderen</button>
                </li>
            </ul>
        </div>
    </div>

}

My ajax code is next :

(First ajax code, where I update database field found to value 1, it works fine, the only problem is because it has been call more the once)

<script type="text/javascript">
    $(document).ready(function() {
        $(document).on("click","button[class*=btnFound]", function(e){
            var cijeliID = this.id.split("-");
            var id = cijeliID[1];
            $($("#confirmBox-"+id).data("target")).fadeIn(400);

            $(document).on("click", "#btnFoundConfirm-"+id, function(){
                /*$("#confirmBox-"+id).modal('toggle');*/
                $.ajax({
                    url : "pet-found.php",
                    type: "POST",
                    dataType: "json",
                    data : {id : id, status:"found", sessionCode : "<?php echo $session_code; ?>"},
                    beforeSend: function(){
                        $("#info-middle-register").show();
                    },

                    success: function(msg){
                        $("#info-middle-register").hide();
                        if(msg.result == "Found"){
                            $("#delpetsuccess-"+id).html("<i class=\"fa fa-thumbs-o-up\"></i>  Uw huisdier is thuis. De VermisteDieren site wenst u veel plezier met uw beestje.").fadeIn(300).fadeOut(10000);
                            $("#watermark-"+id).show();
                            $("#drpDown-"+id).html("<li id=\"liTochGezocht-"+id+"\" class=\"col-lg-12\"><button id=\"dataTitle btnNotFound-"+id+"\" class=\"btnNotFound btn btn-primary col-lg-12 xol-sm-12 col-md-12 col-xs-12 btn-sm\" data-title=\"Klik hier als uw beestje toch nog niet gevonden is.\"><i class=\"fa fa-arrow-left\"></i>  Toch nog gezocht?</button></li>");
                            $("#dier-"+id).addClass("opacityClass");

                        }else{
                            if(msg.result == "NotFound"){
                                $("#delpeterror-"+id).html("<i class=\"fa fa-exclamation-triangle\"></i>  Er is iets misgelopen. Contacteer ons via info@vermistedieren.be.").fadeIn(300).fadeOut(10000);
                            }
                        }
                    },

                    error: function(){
                        $("#info-middle-register").hide();
                        $("#delpeterror-"+id).html("<i class=\"fa fa-exclamation-triangle\"></i>  Er is iets misgelopen. Contacteer ons via info@vermistedieren.be.").fadeIn(300).fadeOut(10000);
                    }
                })
            });
            e.preventDefault();
        });
    });
</script>

(Second code, where I update database field found to value 0)

<!-- Ako klikne na go back kada je zivotinja oznacena kao pronadjena -->
<script type="text/javascript">
    $(document).ready(function() {
        $(document).on("click","button[class*=btnNotFound]", function(e){
            var cijeliID = this.id.split("-");
            var id = cijeliID[1];

            $.ajax({
                url : "pet-found.php",
                type: "POST",
                dataType: "json",
                data : {id : id, status:"notFound", sessionCode : "<?php echo $session_code; ?>"},
                beforeSend: function(){
                    $("#info-middle-register").show();
                },

                success: function(msg){
                    $("#info-middle-register").hide();
                    if(msg.result == "changeMindNotFound"){
                        $("#watermark-"+id).hide();
                        $("#dier-"+id).removeClass("opacityClass");
                        $("#txtFound-"+id).hide();
                        $("#liTochGezocht-"+id).hide();
                        $("#drpDown-"+id).html("<li class=\"col-lg-12\"><button id=\"dataTitle btnFound-"+id+"\" class=\"btnFound btn btn-success col-lg-12 col-sm-12 col-md-12 col-xs-12 btn-sm\" data-title=\"Klik hier als uw dier gevonden is\" data-target=\"#confirmBox-"+id+"\" data-toggle=\"modal\"><i class=\"fa fa-home\"></i>  Gevonden</button></li><div style=\"clear:both;\"></div><li role=\"separator\" class=\"divide5\"></li><li class=\"col-lg-12\"><form action=\"dier-toevoegen.php\" method=\"POST\"><input type=\"hidden\" name=\"changeID\" value=\""+id+"\"><button id=\"dataTitle\" class=\"btn btn-info col-lg-12 col-sm-12 col-md-12 col-xs-12 btn-sm\" data-title=\"Klik hier om de informatie over uw dier te wijzigen\" type=\"submit\"><i class=\"fa fa-pencil\"></i>  Wijzigen</button></form></li><div style=\"clear:both;\"></div><li role=\"separator\" class=\"divider\"></li>                                            <li class=\"col-lg-12\"><button id=\"dataTitle btnVerwijderen-"+id+"\" class=\"linkDelete btn btn-danger col-lg-12 col-sm-12 col-md-12 col-xs-12 btn-sm\" data-title=\"Klik hier om uw dier te verwijderen\" href=\"#\"><i class=\"fa fa-trash\"></i>  Verwijderen</button></li>");

                    }else{
                        if(msg.result == "changeMindFound"){
                            $("#delpeterror-"+id).html("<i class=\"fa fa-exclamation-triangle\"></i>  Er is iets misgelopen. Contacteer ons via info@vermistedieren.be.").fadeIn(300).fadeOut(10000);
                        }
                    }
                },

                error: function(){
                    $("#info-middle-register").hide();
                    $("#delpeterror-"+id).html("<i class=\"fa fa-exclamation-triangle\"></i>  Er is iets misgelopen. Contacteer ons via info@vermistedieren.be.").fadeIn(300).fadeOut(10000);
                }
            })
        });
    });
</script>

When the page loads first time, if I click on "Gevonden" button, than is everything perfect. The first ajax code is called once and it is ok. But than are the list items of a dropmenu changed to only one button ("toch nog gezoch"). If I click on it, than is second ajax code called and it does what it need to do.

Then are the list items in a dropdown menu changed again to the first three buttons (Gevonden, Wijzigen, Verwijderen). And than I get a problem. When I then click on gevonden button, the first ajax code is called two times. And every next try is the first ajax code called one time more.

Any syggestions? Thanks in advance.

  • 写回答

3条回答 默认 最新

  • dongyi2534 2016-01-26 17:02
    关注

    I have a solution. I separated one click event of another as @JamesThorpe said.

    <script type="text/javascript">
        $(document).ready(function() {
            $(document).on("click","button[class*=btnFound]", function(e){
                var cijeliID = this.id.split("-");
                var id = cijeliID[1];
                $($("#confirmBox-"+id).data("target")).fadeIn(400);
                e.preventDefault();
            });
        });
    </script>
    <script type="text/javascript">
    $(document).ready(function() {
        $(document).on("click", ".btnFoundConfirm", function(){
            var cijeliID = this.id.split("-");
            var id = cijeliID[1];
            /*$("#confirmBox-"+id).modal('toggle');*/
            $.ajax({
                url : "pet-found.php",
                type: "POST",
                dataType: "json",
                data : {id : id, status:"found", sessionCode : "<?php echo $session_code; ?>"},
                beforeSend: function(){
                    $("#info-middle-register").show();
                },
    
                success: function(msg){
                    $("#info-middle-register").hide();
                    if(msg.result == "Found"){
                        $("#delpetsuccess-"+id).html("<i class=\"fa fa-thumbs-o-up\"></i>  Uw huisdier is thuis. De VermisteDieren site wenst u veel plezier met uw beestje.").fadeIn(300).fadeOut(10000);
                        $("#watermark-"+id).show();
                        $("#drpDown-"+id).html("<li id=\"liTochGezocht-"+id+"\" class=\"col-lg-12\"><button id=\"dataTitle btnNotFound-"+id+"\" class=\"btnNotFound btn btn-primary col-lg-12 xol-sm-12 col-md-12 col-xs-12 btn-sm\" data-title=\"Klik hier als uw beestje toch nog niet gevonden is.\"><i class=\"fa fa-arrow-left\"></i>  Toch nog gezocht?</button></li>");
                        $("#dier-"+id).addClass("opacityClass");
    
                    }else{
                        if(msg.result == "NotFound"){
                            $("#delpeterror-"+id).html("<i class=\"fa fa-exclamation-triangle\"></i>  Er is iets misgelopen. Contacteer ons via info@vermistedieren.be.").fadeIn(300).fadeOut(10000);
                        }
                    }
                },
    
                error: function(){
                    $("#info-middle-register").hide();
                    $("#delpeterror-"+id).html("<i class=\"fa fa-exclamation-triangle\"></i>  Er is iets misgelopen. Contacteer ons via info@vermistedieren.be.").fadeIn(300).fadeOut(10000);
                }
            })
        });
    });
    
    </script>
    

    And in a modal button (Ja! Ga verder) I added a class btnFoundConfirm and it worked.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路