Я делаю простое приложение для веб-чата, используя ajax, php, javascript и mysql. То, что я пытаюсь сделать здесь, состоит в том, чтобы избежать выборки всей базы данных через интервал в 1 секунду (что обычно делается в основном приложении чата), но я хочу, чтобы вытащить и отобразить (добавив) также те чаты, которые были недавно введенных в базу данных любым пользователем.Правильно ли это код jquery ajax?
Чтобы реализовать это: сначала, когда пользователь сначала открывает экран чата, вся база данных загружается в окне чата (не показано в этом фрагменте кода), а затем я использую переменную msgid для получения последнего значения MSg_ID (который является первичным ключом автоматического увеличения в моей таблице чата) через запрос ajax на страницу «Msg.php», которая возвращает требуемое значение msg_id.
Теперь, используя это значение msgid и сравнивая его с максимальным значением Msg_ID каждую секунду в базе данных через запрос ajax на страницу «Chat3.php». Если изменилось значение Max Msg_ID, возвращаются требуемые строки. После этого я обновляю значение «msgid», используя тот же самый предыдущий запрос ajax на страницу «Msg.php»
Страницы Msg.php и Chat3.php работают отлично, так как я их тщательно протестировал.
Мой вопрос здесь в чем проблема в моем коде, почему он не работает? Можем ли мы использовать запрос ajax внутри функции обратного вызова ajax или нет? Что еще может быть вероятным источником ошибок? Любой вход будет ценным :) Если у вас есть проблемы с пониманием кода, оставьте комментарий. '#yyy' и '#zzz' - это случайные элементы div, которые я использую для проверки значения данных функции обратного вызова ajax.
Я могу даже опубликовать остальную часть кода, если это поможет.
<script type"text/javascript">
$(document).ready(function() {
var dept = '<?php echo $deptId; ?>';
$.ajax({
url: 'scripts/php/Msg.php',
data: {dept:dept},
success: function(data) {
$('#yyy').html(data);//this displays the correct value
var msgid=data;
}
});
var interval = setInterval(function() {
$.ajax({
url: 'scripts/php/Chat3.php',
data: {dept:dept,msgid:msgid},
success: function(data) {
if(data!='bad'){
//$('#messages').prepend(data);
$('#zzz').html(data);//does not display any value although Chat3.php is returning the correct value.
//below ajax request to update the value of msgid
$.ajax({
url: 'scripts/php/Msg.php',
data: {dept:dept},
success: function(data) {
var msgid=data;
$('#zzz').html(data); //not displaying anything although above one is was displaying
}
});
}
}
});
}, 1000);
});
</script>
Вот мой Msg.php
<?php
require '../../includes/database/connect.db.php';
function get_msg($dept){
$query= "SELECT Msg_ID,Sender, Message ,Time_stamp FROM chat WHERE Dept_ID='$dept' ORDER BY Msg_ID DESC" ;
$run=mysql_query($query);
$messages =array();
while($message=mysql_fetch_assoc($run)){
$messages[] =array('msgid'=>$message['Msg_ID'],
'sender'=>$message['Sender'],
'message'=>$message['Message'],
'time_stamp'=>$message['Time_stamp']);
}
return $messages;
}
$dept=$_GET['dept'];
$messages = get_msg($dept);
$x=count($messages);
if($x){
foreach($messages as $message) {
if($x==count($messages)){
echo $message['msgid'];
}
$x--;
}
}
?>
Вот мой Chat3.php
<?php
require '../../includes/database/connect.db.php';
function get_msg($dept,$msgid){
$query1= "SELECT MAX(Msg_ID) as msg_id FROM chat" ;
$run1=mysql_query($query1);
$row = mysql_fetch_assoc($run1);
$result =$row['msg_id'];
$messages =array();
if($result>$msgid)
{
$query= "SELECT Sender, Message ,Time_stamp FROM chat WHERE Dept_ID='$dept' AND Msg_ID>'$msgid' ORDER BY Msg_ID DESC" ;
$run=mysql_query($query);
while($message=mysql_fetch_assoc($run)){
$messages[] =array('sender'=>$message['Sender'],
'message'=>$message['Message'],
'time_stamp'=>$message['Time_stamp']);
}
return $messages;
}
else
{
return $messages;
}
}
$dept=$_GET['dept'];
$msgid=$_GET['msgid'];
$messages = get_msg($dept,$msgid);
if(count($messages)){
foreach($messages as $message) {
echo '<strong>'.$message['sender'].' Sent</strong><br>';
echo $message['message'].' <i><small><div align="right">'.$message['time_stamp'].'</i></small></div>';
}
}
else {
echo 'bad';
}
?>
IF Msg.php и Chat3.php работают отлично, какие другие ошибки, которые вы получаете? – Abhinav
Ошибка генерируется, это просто отображение элемента данных в функции обратного вызова, как если бы он не получил его или что-то еще, и я полностью проверил My Msg.php и Chat3.php –
Только для уведомления тип запроса ajax, который вы создаете, является типом GET, поскольку ничего больше не объявлено, поэтому, если вы получаете данные для публикации, вам нужно установить тип: «POST» в объекте. – Djip