簡體   English   中英

Ajax重新加載框架僅可運行一次

[英]Ajax reload frame only works once

我的網站上有時間表。 用戶可以選擇多次。 選定的時間插入到數據庫中,並且按鈕從綠色變為紅色,因此用戶知道它已被禁用。

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

更改ajax success方法:

$.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的內容,則必須在單擊標記為“ Refresh Timetable ”的按鈕時調用此ajax

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM