亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JQuery/Ajax html 僅加載一次

JQuery/Ajax html 僅加載一次

PHP
慕田峪4524236 2023-11-03 20:14:26
我正在嘗試制作一個幾乎實時顯示兩個數據庫中的數據的頁面。我遇到的問題是 JQuery Ajax 調用僅更改 html 一次HTML 代碼:    <div class="database">    <h1>Trying to connect...</h1>    <script src="http://code.jquery.com/jquery-3.1.1.min.js"></script>    <script type="text/javascript">        $(".database").each(function update()        {            var self = this;            var i = 0;            $.ajax(                {                    url: "/show",                    method: 'GET',                    cache: false,                    success: function (data) {                        $(self).html(data);                        console.log(data);                    }                }            )           setTimeout(update, 10000);        });        update();    </script></div>在 /show 上運行的 PHP 代碼    try    {        $SosAlerts = DB::connection('MSSQLSERVER01')->select('select TOP(10) * from SosAlert ORDER BY date_time DESC');        echo "<h3>MSSQLSERVER01</h3>              <table>        <tr>                <th>SosAlertID</th>                <th>XCoordinate</th>                <th>YCoordinate</th>                <th>Date And Time</th>              </tr>";        foreach ($SosAlerts as $sosAlert) {            echo "<tr>                <td> " . $sosAlert->SosAlertID . "</td>                <td>" . $sosAlert->XCoordinate . "</td>                <td>" . $sosAlert->ZCoordinate . "</td>                <td>" . $sosAlert->date_time . "</td>            </tr>";        }問題是,第一次調用時只$(self).html(data)更新一次 html 內容,之后就不再改變了。顯示每 10 秒進行一次 ajax 調用,并且在更新數據庫時正確更改數據。即我運行 HTML 頁面,它顯示嘗試連接...,之后它更改為顯示 10 行的表,并且控制臺日志中顯示相同的內容,在接下來的 10 秒內我在數據庫中插入新行,重復調用,控制臺日志轉儲數據時顯示新行,但 html 未更改<div class="database">console.log(data)
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

我懷疑對的引用self在函數調用中丟失了。第一個this引用迭代中的元素.each(),但我打賭該迭代之外的后續調用this引用函數本身。


這種讓函數調用本身的方法非常尷尬。相反,將操作放入其自己的函數中,然后將該函數設置為一個時間間隔:


function update() {

    $(".database").each(function () {

        var self = this;

        var i = 0;

        $.ajax({

            url: "/show",

            method: 'GET',

            cache: false,

            success: function (data) {

                $(self).html(data);

                console.log(data);

            }

        });

    });

}

setInterval(update, 10000);

這樣,update每 10 秒的每次調用都會調用一次新的調用,每次調用.each()都會依次設置為目標元素。self


查看完整回答
反對 回復 2023-11-03
  • 1 回答
  • 0 關注
  • 132 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號