Ajax重载帧只能工作一次

问题描述 投票:1回答:1

我的网站上有时间表。用户可以多次选择。所选时间将插入数据库,按钮将从绿色变为红色,因此用户知道它已被禁用。

我只想重新加载div来做这件事。它确实有效,但它只工作一次,当第二次按下按钮时,div不会刷新/重新加载。

更新数据库/刷新;

    $('.updateTime').click(function(){
        var getUrlParameter = function getUrlParameter(sParam) {
            var sPageURL = window.location.search.substring(1),
                sURLVariables = sPageURL.split('&'),
                sParameterName,
                i;

            for (i = 0; i < sURLVariables.length; i++) {
                sParameterName = sURLVariables[i].split('=');

                if (sParameterName[0] === sParam) {
                    return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
                }
            }
        };


        var uniqueId = $(this).attr('id');
        var sdate = getUrlParameter('date');

        $.ajax({
            url: './ajax/reservation_insert_times.php',
            type: 'POST', 
            data: {
                uniqueId :uniqueId, sdate :sdate
            },

            success: function(mydiv){
            $("#result").load(location.href+ ' #mydiv');
            }

        });
    });

生成时间的代码

    <div class="row" id="result">

        <?          
        $result = array();  
        $query = $db->query("SELECT * FROM reservation_times WHERE datum = '" . db_escape($_GET['date']) . "' ");
        while($row = mysqli_fetch_array($query)) {
        $result[] = $row['time']; 
        }           
    ?>
    <?
    $timestamp = strtotime(date("Y-m-d")." 12:00");

    for ($i=0;$i<=32;$i++) {

        $time = date('H:i', $timestamp);
        $time .= ' UUR';

        if (in_array($time, $result)) {
            $color = "background-color:red !important";
        }
        else $color = "";

        $timestamp += 15 * 60; 

        if (isset($checked) && $checked !='') { $color = 'background-color: red;';}?>

            <div class="col-xs-4 col-md-3 col-lg-2" id="mydiv">
                <button type="button" id="<?=$time;?>" class="btn btn-block btn-success btn-sm text-center" style="padding:10px; margin-bottom:10px; <?=$color;?>" onclick="" <? if (isset($checked) && $checked !='') { echo 'disabled';}?>>
            <?=$time;?>
                </button>
            </div>

        <? } ?>       
    </div>

reservation_availablity.php调用的代码:

    $query = $db->query("SELECT * FROM reservation_times WHERE time = '".$uniqueId."'");
if(mysqli_num_rows($query) == 1) {
    $remove = $db->query("DELETE FROM reservation_times WHERE time = '".$uniqueId."'");
} else {
    if (isset($uniqueId) && $uniqueId !='') :
        $sql = $db->query("INSERT INTO reservation_times (time, datum)
    VALUES ('".$uniqueId."', '".$newDate."')");
    endif;
}
php ajax reload
1个回答
0
投票

改变你successajax方法:

$.ajax({
        url: './ajax/reservation_insert_times.php',
        type: 'POST', 
        data: {
            uniqueId :uniqueId, sdate :sdate
        },

        success: function(mydiv){
            $("#result").html(mydiv);    
        }

    });

你发送一个ajax来获取新的内容,但然后在success方法而不是加载收到的新内容作为ajax响应你再次加载相同div的内容。这就是它第一次工作的原因,但下次继续保持不变。

//Wrong
$("#result").load(location.href+ ' #mydiv'); 

// Correct
$("#result").html(mydiv);

所以,现在每当这个ajax发送到服务器时,它将更新div#result的内容。并且允许用户在需要时手动刷新此div的内容,然后在点击标记为ajax的按钮时,您必须调用此Refresh Timetable

© www.soinside.com 2019 - 2024. All rights reserved.