0

load.phpファイルでifcondition($ last_msg_id_db> $ last_msg_id)を使用しない場合、jquery関数は正常に機能し、0.5秒ごとにデータをチェックし続けます。

ただし、使用する場合、条件の場合、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 = '';
    });
});
}
4

1 に答える 1

1

$final_response2回目のajaxリクエストの後にデータがない可能性があり、条件が値をに設定できなかった可能性があるため、機能しなかった可能性があります$final_response

条件$final_responseの上に初期化する必要があるかもしれません、if

$final_response = array();
if($last_msg_id_db>$last_msg_id){
   ...
   ...
}
echo json_encode($final_response);
于 2012-12-01T11:10:45.480 に答える