加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP jQuery AJAX检查MySQL数据库的变化并加载更改?

发布时间:2020-12-13 18:12:31 所属栏目:PHP教程 来源:网络整理
导读:我有一个用户可以提交的链接数据库.每次用户提交新链接时,都会将其添加到数据库中.我有一个单独的页面,列出了所有提交的链接.如何让这个单独的页面检查数据库是否有变化,并在找到它们时用 AJAX加载它们? 需要根据数据库内容更新的页面必须经常轮询DB. Javas
我有一个用户可以提交的链接数据库.每次用户提交新链接时,都会将其添加到数据库中.我有一个单独的页面,列出了所有提交的链接.如何让这个单独的页面检查数据库是否有变化,并在找到它们时用 AJAX加载它们?
需要根据数据库内容更新的页面必须经常轮询DB. Javascript是一种客户端技术,不适合直接与后端服务器交互.

javascript看起来像这样(使用jquery):

$.post("/webroot/checkForChanges.php",{ currentNumber: currNumString },function(dat){
            $(dat).find('link').each( function() {
                $('#linksTable').append(""+$(this).text()+"");
            });
});

这将对您将要编写的页面(checkForChanges.php)发出一个POST请求,其中包含名为currentNumber的变量,该变量的值是表中当前链接数的字符串表示形式(根据您的喜好计算这些).

代码的函数(dat)部分是在请求完成时运行的回调函数(即php页面处理完毕并且结果文本已经被接收到浏览器中).

当我解释PHP页面正在做什么时,我将回到正在做的事情.

您没有告诉我们您的数据库结构,但由于您成功地允许人们添加链接,您必须在某处定义一个序列,以跟踪链接的整数ID(以便每个链接都可以被赋予唯一的ID在数据库中).我假设你称之为’links-count’
您应该使用以下伪代码创建一个简单的php页面:

//open a database connection
$DB = connect( name,user,password );

//receive value
$currNum =$_POST['currentNumber'];

//check to see if sequence number has incremented since last time:
$seqNum = query( "SELECT currval('links-count')" );

if ($seqNum == $currNum){
    exit(0);
}   //if they are the same,just exit the page without writing anything

//otherwise,carry on... get the result of your query (for new links)
//and loop through,echoing return data

$newEntries = query("SELECT url FROM links WHERE id > ".$currNum);

echo "<newlinks>";

while ( $result = fetch_result( $newEntries ) ) {
    echo "<link><a>".$result."</a></link>";
}

echo "</newlinks>";

此页面返回的输出将是一个xml文档,其中包含每个链接的节点,其中包含要放入表格单元格中的HTML.

现在我们可以回到客户端Java代码中的$.post请求中的回调函数:

function(dat){
    $(dat).find('link').each( function() {
          $('#linksTable').append(""+$(this).text()+"");
    });
});

dat是返回的文本,将其包装为jquery对象,然后找到名为“link”的标记集合.对于php页面返回的每个’link’标签,执行一个函数,该函数将新表行附加到linksTable,其中包含链接标记内的数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读