У меня есть простой сценарий AJAX, который вставляет данные в базу данных. Работает отлично. Проблема возникает, когда я использую setInterval
запрашивать данные из log.php
каждые 3 секунды я получаю неопределенные индексы. Это логично, поскольку данные не отправляются. Как я могу избежать этого? Как я могу передать необходимые переменные на log.php
без onclick
успешно выполнить запрос выбора?
log.php
//get variables
$chatMessage= $_POST['chatMessage'];
$fromUserId= $_POST['fromUserId'];
$toUserId= $_POST['toUserId'];
$chatStatus='1';
$loginid_session=$fromUserId;
$fromUser=$toUserId;$chatQ="SELECT * FROM ve_chat c JOIN ve_users u ON c.fromUserId=u.UserID WHERE c.toUserId= '$loginid_session' AND c.fromUserId ='$fromUser' ORDER BY sent DESC";
$chatresult=mysqli_query($db,$chatQ);
while($chats=mysqli_fetch_array($chatresult)){
echo "<div id='displayMessage'>";
echo "<span>" . $chats['ProfileName'] . " sent on" .$chats['sent']."</span> : <p >".$chats['message']."</p>";
echo "</div>";
}
Ajax
<script>
$(document).ready(function(){
$("#buttons").click(function(){
var fromuserid = $("#fromUserId").val();
var touserid = $("#toUserId").val();
var chatMessage = $("#chatMessage").val();
// stored in database.
var dataString = 'fromUserId='+ fromuserid + '&toUserId='+ touserid + '&chatMessage='+ chatMessage;
// AJAX
$.ajax({
type: "POST",
url: "chat.php",
data: dataString,
cache: true,
success: function(response){
$("#displayMessage").html(response);
$("#chatForm").trigger("reset");
}
});
return false;
});
});
$(document).ready(function(e){ $.ajaxSetup({cache:false});
setInterval(function(){$('#displayMessage').load('log.php');}, 3000);
});
</script>
Задача ещё не решена.
Других решений пока нет …