我的英语不好。抱歉。我相信你明白我的意思。 我在下面分享的代码询问是否有新内容,如果有,请将新内容添加到页面。但我不知道更新或删除相同或不同(id)需要什么逻辑。如何进行更新和删除?
的index.php
<?php require "ayar.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>jQuery Ajax ile Anlık Veri Güncelleme Uygulaması</title>
<style type="text/css">
ul, li {padding: 0; margin: 0; list-style: none; font: 14px Arial}
ul li {padding: 5px; background: #eee; margin-bottom: 5px}
ul li.new {background: lightgreen}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<ul>
<?php
$query = mysql_query("SELECT * FROM veri ORDER BY veri_id DESC");
while ($row = mysql_fetch_object($query)){
echo '<li id="'.$row->veri_id.'">'.$row->veri_text.'</li>';
}
?>
</ul>
<div id="sonuc"></div>
</body>
</html>
ajax.php
<?php
require "ayar.php";
if ($_POST){
$lastid = $_POST["lastid"];
if (!$lastid){
$array["hata"] = "Geçersiz işlem!";
} else {
$query = mysql_query("SELECT * FROM veri WHERE veri_id > $lastid ORDER BY veri_id DESC");
if (mysql_affected_rows()){
while ($row = mysql_fetch_object($query)){
$array["veriler"] = '<li class="new" id="'.$row->veri_id.'">'.$row->veri_text.'</li>';
}
}
}
echo json_encode($array);
}
?>
ajax.js
$(function () {
$ajaxLoad = function () {
var lastid = $("ul li:first").attr("id");
$.ajax({
type: "post",
url: "ajax.php",
data: {"lastid": lastid},
dataType: "json",
success: function (result) {
if (result.error) {
$("#result").html(result);
}
else{
$("ul").prepend(result.data);
}
}
});
}
setInterval("ajaxLoad()",5000);
答案 0 :(得分:1)
在使用jQuery的Javascript中,您可以:
$( "selector" ).length
检查元素是否存在$( "selector" ).remove()
删除项目。$( "selector" ).html()
更新内容。其中selector是rowid(例如:#123
)
因此,在您的成功处理程序中,您可以将$("ul").prepend(result.data);
替换为:
<li>
id
列表的内容(示例:idList = jQuery.map(jQuery("ul li"),function(e){return e.id})
)idList.indexOf(results.data.test(/id="(.*?)"/) > 0
)...然后决定是否插入/更新/删除列表。
答案 1 :(得分:1)
根据您的代码,您每5秒钟通过ajax查询更新或加载数据。 $ajaxLoad()
是一个函数而不是字符串。所以你的setInterval函数应该是这个
setInterval($ajaxLoad(), 5000)
删除相同或不同的ID:
当您想要删除时?在执行click
之类的任何特定操作后,如果是,那么您也可以通过ajax查询执行此操作。
答案 2 :(得分:0)
在ajax.js的最后一行,你错过了函数名称上的美元符号$,你应该有setInterval("$ajaxLoad()",5000);