#javascript #php
#javascript #php
Вопрос:
То, что я пытаюсь создать правильно, — это, по сути, уведомление, когда кто-то отправляет вам сообщение. Это просто, когда я нахожусь на веб-странице чата, и друг отправляет мне сообщение, рядом с его именем появляется уведомление. Моя проблема, как следует из названия, заключается в том, что я нахожу трудности с передачей переменной цикла while из Php в функцию JavaScript.
Вот мой Php-код:
<?php
$query = $db->prepare("
SELECT frst_user AS frst, scnd_user AS scnd
FROM frnd_rqst
WHERE (frst_user=:fid OR scnd_user = :fid)#
AND status=2
");
$query->bindParam(":fid", $getid);
$query->execute();
while($row = $query -> fetch(PDO::FETCH_ASSOC)) {
$numrow = $query -> rowCount();
$frst = $row['frst'];
$scnd = $row['scnd'];
$sec_quer = $db->prepare("
SELECT fname, lname, stud_id
FROM stud_bas
WHERE stud_id!=:sid
AND (stud_id=:fid OR stud_id = :tid)
");
$sec_quer->bindParam(":sid", $getid);
$sec_quer->bindParam(":fid", $frst);
$sec_quer->bindParam(":tid", $scnd);
$sec_quer->execute();
$result = $sec_quer->fetch();
$fname = $result['fname'];
$lname = $result['lname'];
$frid = $result['stud_id'];
?>
<ul>
<li class="friend-message" id="<?php echo $frid;?>" value="<?php echo $frid;?>">
<a href="#" ><?php echo $fname." ".$lname;?></a>
</li>
<p id="fridfrid<?php echo $frid;?>"></p>
</ul>
<?php
}
?>
Вот код JavaScript:
<script type="text/javascript">
function numberOfMessages() {
var no_msg = new XMLHttpRequest();
var frid = "<?php echo $frid;?>";
no_msg.onreadystatechange = function() {
if (no_msg.readyState==4 amp;amp; no_msg.status==200) {
document.getElementById('fridfrid' frid).innerHTML = no_msg.responseText;
}
}
no_msg.open('GET','php/testing.php?frid=' frid, true);
no_msg.send();
}
setInterval(function(){numberOfMessages()},1000);
</script>
Я попытался поместить функцию в цикл while, но работает только для последнего вывода. Я также пробовал, где вы получаете все имена, но, похоже, это тоже не работает для меня. Есть предложения?
Комментарии:
1. Если вам нужно взаимодействие сервер-клиент в режиме реального времени, то, вероятно, вам нужно будет реализовать nodejs.org/en или аналогичный движок вместо php. В противном случае на вашем сервере могут скоро закончиться ресурсы.
2. возможно, вы также захотите посмотреть веб-сокеты.
3. @KiranShakya я не думаю, что это решило бы какие-либо проблемы. Насколько я понимаю, цикл while просто останавливается, когда сообщений не остается, и цель состоит в том, чтобы новые сообщения отображались сразу после их появления. Посмотрите на WebSockets , как упоминал Jhect.