第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

JQuery/Ajax html 僅加載一次

JQuery/Ajax html 僅加載一次

PHP
慕田峪4524236 2023-11-03 20:14:26
我正在嘗試制作一個幾乎實時顯示兩個數(shù)據(jù)庫中的數(shù)據(jù)的頁面。我遇到的問題是 JQuery Ajax 調(diào)用僅更改 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>";        }問題是,第一次調(diào)用時只$(self).html(data)更新一次 html 內(nèi)容,之后就不再改變了。顯示每 10 秒進行一次 ajax 調(diào)用,并且在更新數(shù)據(jù)庫時正確更改數(shù)據(jù)。即我運行 HTML 頁面,它顯示嘗試連接...,之后它更改為顯示 10 行的表,并且控制臺日志中顯示相同的內(nèi)容,在接下來的 10 秒內(nèi)我在數(shù)據(jù)庫中插入新行,重復調(diào)用,控制臺日志轉儲數(shù)據(jù)時顯示新行,但 html 未更改<div class="database">console.log(data)
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經(jīng)驗 獲得超4個贊

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


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


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 秒的每次調(diào)用都會調(diào)用一次新的調(diào)用,每次調(diào)用.each()都會依次設置為目標元素。self


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號