2014-07-20 36 views
0

所以,我有我的大部分系統工作的,我停留在最後一位阿賈克斯通知系統 - 採用最新notification_id

的GET被currentlyusing相同notification_id從while循環得到,所以它不斷地搜索抵抗該編號反覆新記錄。

是這樣的...

jquery....4862996 (line 4) 
GET http://viewajax.php?notification_id=43&_=1405814864693 


jquery....4862996 (line 4) 
GET http://viewajax.php?notification_id=43&_=1405814864694 

什麼我希望做的是搜索服務由while循環的第一notification_id把它送上服務器端viewajax.php,看看是否有新紀錄並且如果將它插入到它的div(它當前所做的),但是然後在其下一個ajax週期中使用來自服務器的相同新的notification_id來記錄新記錄。我已經嘗試了一切,並提出了很多問題,我一直在尋找高和低在線尋找可能的解決方案無濟於事。 任何幫助將不勝感激,我會永遠愛你。

AJAX

<? 
$user1_id=$_SESSION['id']; 
$call="select * from notifications WHERE notification_targetuser='$user1_id' AND notification_status=1 ORDER BY notification_id DESC LIMIT 1"; 
     $chant=mysqli_query($mysqli,$call) or die(mysqli_error($mysqli)); 

while($notification=mysqli_fetch_array($chant)){ 
      ?> 
      <script type="text/javascript"> 

function loadIt() { 

    var notification_id=<?php echo $notification['notification_id'] ;?> 

$.ajax({ 
type: "GET", 
url: "viewajax.php?notification_id="+notification_id, 
dataType:"json", 
cache: false, 
success: function(data){ 
$("#notif_actual_text-"+notification_id).prepend('<div class="notif_ui"><div class="notif_text"><div id="notif_actual_text-'+data['notification_id']+'" class="notif_actual_text"><img border=\"1\" src=\"userimages/cropped'+data['notification_triggeredby']+'.jpg\" onerror=this.src=\"userimages/no_profile_img.jpeg\" width=\"40\" height=\"40\" ><br /><a href="'+data['notification_id']+'">'+data['notification_content']+' </a><br />'+data['notification_time']+'<br /></div></div></div></div>'); 
i = parseInt($("#mes").text()); $("#mes").text((i+data.num)); 
} 
}); 
} 
setInterval(loadIt, 10000);       
      </script> 


<? }}?> 

VIEWAJAX.php

if(isset($_GET['notification_id'])){ 

$id= mysqli_real_escape_string($mysqli,$_GET['notification_id']); 
$user1_id= $_SESSION['id']; 
$json = array(); 
$com=mysqli_query($mysqli,"select notification_id,notification_content,notification_time,notification_triggeredby from notifications where notification_id > '$id' AND notification_status='1' "); 
echo mysqli_error($mysqli); 

$num = mysqli_num_rows($com); 
if($num>0){ 

    $json['num'] = $num; 
}else{ 
    $json['num'] = 0; 
} 
$resultArr = mysqli_fetch_array($com); 
$json['notification_id'] = $resultArr['notification_id']; 
$json['notification_content'] = $resultArr['notification_content']; 
$json['notification_triggeredby'] = $resultArr['notification_triggeredby']; 
$json['notification_time'] = $resultArr['notification_time']; 
mysqli_free_result($com); 

echo json_encode($json); 

} 

編輯

PHP源

{"num":0,"notification_id":null,"notification_content":null,"notification_triggeredby":null,"notification_time":null} 

AJAX源

<script type="text/javascript"> 

function loadIt() { 


    var notification_id=44 
$.ajax({ 
type: "GET", 
url: "viewajax.php?notification_id="+notification_id, 
dataType:"json", 
cache: false, 
success: function(data){ 
$("#notif_actual_text-"+notification_id).prepend('<div class="notif_ui"><div class="notif_text"><div id="notif_actual_text-'+data['notification_id']+'" class="notif_actual_text"><img border=\"1\" src=\"userimages/cropped'+data['notification_triggeredby']+'.jpg\" onerror=this.src=\"userimages/no_profile_img.jpeg\" width=\"40\" height=\"40\" ><br /><a href="'+data['notification_id']+'">'+data['notification_content']+' </a><br />'+data['notification_time']+'<br /></div></div></div></div>'); 
i = parseInt($("#mes").text()); $("#mes").text((i+data.num)); 
} 
}); 
} 
setInterval(loadIt, 10000);    



      </script> 
+1

如果您發佈正確縮進的代碼併發布瀏覽器看到的內容(在瀏覽器中使用View/Source),而不是您的PHP模板文件,則您更有可能獲得有關JavaScript結尾的幫助。就目前而言,我不知道JS的實際外觀,因爲我不確切知道你的模板中嵌入的PHP會做什麼。如果您發佈瀏覽器所看到的內容,那麼這不再是一個問題。 – jfriend00

+0

也不清楚你的具體問題是什麼。 – charlietfl

+0

Ajax每次觸發它從客戶端的while循環中的數據庫中的last_id觸發..它將該id傳遞給服務器端並搜索新記錄。假設有一條新記錄返回並將其插入到div中。然後再次重新啓動aax進程,只有在第一次搜索數據庫時使用相同的id ..剛剛找到的新id,我需要使用那個進行搜索,所以有一個新的數據循環。 – Dave

回答

0

爲什麼不在php部分檢索它後更新「notification_status」爲0?然後它不會再被檢索。