Ajax重新加载框架仅可运行一次

时间:2019-03-06 09:23:15

标签: php ajax reload

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

我只想重新加载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;
}

1 个答案:

答案 0 :(得分:0)

更改success的{​​{1}}方法:

ajax

您正在发送$.ajax({ url: './ajax/reservation_insert_times.php', type: 'POST', data: { uniqueId :uniqueId, sdate :sdate }, success: function(mydiv){ $("#result").html(mydiv); } }); 来获取新内容,但是然后使用ajax方法而不是加载作为success响应收到的新内容,而是再次加载同一div的内容。这就是为什么它第一次运行,但是下次将保持不变。

ajax

因此,现在//Wrong $("#result").load(location.href+ ' #mydiv'); // Correct $("#result").html(mydiv); 每次发送到服务器时,它将更新ajax的内容。为了允许用户在需要时手动刷新此div的内容,则必须单击标记为div#result的按钮才能调用此ajax