当我在load.php文件中不使用if条件($ last_msg_id_db> $ last_msg_id)时,jquery函数可以正常工作并在每半秒后继续检查数据。
但是如果我使用,如果是条件,jquery函数只能在第一次运行时运行,但在第一次运行后,它不起作用并停止工作。
我认为,我没有将if条件放在load.php的正确位置.Plz帮助或建议任何替代方法。
php文件(Load.php)就在这里
$last_msg_id=$_POST['last_msg_id'];
$sql=mysqli_query($db3->connection,"SELECT * FROM chat_com ORDER by id ASC");
$sql_m=mysqli_query($db3->connection,"SELECT max(id) as maxid FROM chat_com");
$row_m=mysqli_fetch_array($sql_m);
$last_msg_id_db=$row_m['maxid'];
if($last_msg_id_db>$last_msg_id){
while($row=mysqli_fetch_array($sql)){
$textt=$row['mesg'];
$textt2="$textt<br>";
$response=array();
$response['msg']=$textt2;
$response['last_msg_id_db']=$last_msg_id_db;
$final_response[]=$response;
}
}
echo json_encode($final_response);
Jquery函数就在这里。
var last_msg_id = 1;
function chat_com_one(id, name) {
$('#chatcom').show('fast');
(function chatcom_load_one(id, name) {
alert(last_msg_id);
$.post('load.php', {option:'chatcom_load_one', last_msg_id:last_msg_id}, function(data) {
var json = eval('(' + data + ')');
$.each(json, function(i, row) {
$("#chatcom #commid #commidwin").append(row['msg']);
last_msg_id = row['last_msg_id_db'];
});
setTimeout(chatcom_load_one(id, name), 500);
});
}(id, name));
$('#chatcom_send').click(function() {
$.post('send.php', { option:'chat_com_send_one', text:$('#chatcom_text').val(), tocom:id}, function(data) {
document.getElementById('chatcom_text').value = '';
});
});
}
答案 0 :(得分:1)
它可能无效,因为$final_response
在第二次ajax请求后可能没有任何数据,并且条件可能无法将值设置为$final_response
。
您可能需要在$final_response
条件
if
$final_response = array();
if($last_msg_id_db>$last_msg_id){
...
...
}
echo json_encode($final_response);