お世話になっております。
下記件について、知見のある方いらっしゃいましたらご教示お願いいたします。
https://rewish.jp/blog/tech/php_with_jquery_comet
こちらのサイトを参考に、リアルタイムチャットを実装しようとしているのですが、
うまくいきません。
#実装の流れ
コードを記述する前に実装の流れを説明します。
main.js
にてリロード時、checkUpdate
関数を発火
⇓
message_check.php
に遷移し、メッセージ数が増えていないか確認。
増加していた場合、while
から出てきてreload
関数が発火し、画面が更新される。
#問題となっている箇所
while
から出てきてreload
関数が発火し、画面が更新される。
reload
関数でページの更新が行われないです。
#ソースコード
message.php
メッセージのやり取りを行うページ
message
main.js
main
1jQuery(function($) { 2 var user_id = $('input[name="destination_user_id"]').val(), //送信先のユーザーID 3 current_user_id = $('input[name="current_user_id"]').val(); //自分のユーザーID 4 5 function checkUpdate() { 6 $.post('message_loop.php?mode=update&user_id=' + user_id + '¤t_user_id=' + current_user_id + '', {}, function() { 7 checkUpdate(); 8 }); 9 } 10 checkUpdate(); 11});
message_check.php
<?php require('../db_connect.php'); require('../function.php'); if(isset($_GET['mode'])){ $data = get_messages($_GET['current_user_id'],$_GET['user_id']); $temp = $data; while ($temp === $data) { $temp = get_messages($_GET['current_user_id'],$_GET['user_id']); sleep(1); } reload(); } ?>
#関数の説明
get_user:引数のユーザーIDから、ユーザー情報を取りにいく get_messages:引数のユーザーIDから、ユーザー間でやり取りしているメッセージを取りにいく reload:発火すると、いまいるページの更新が行われる function reload(){ header('Location:'.$_SERVER['HTTP_REFERER']); exit(); }
#確認したこと
デバックを行い、relaod
が発火しmessage.php
が更新されるようなログを出力していたのですが、
結果は更新されていません。
function reload(){ header('Location:'.$_SERVER['HTTP_REFERER']); _debug(`|||||||`.$_SERVER['HTTP_REFERER'].`|||||||`); //独自のデバック関数です。 exit(); }
デバッグ出力結果
|||||||http://localhost/message/message.php?user_id=62||||||| //62はユーザーID
#GitHub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/18 03:51