парсинг джсон ответа ajax
пытаюсь сделать лонг пулинг, но в жс выдает ошибку, при этом раньше была ошибка по выводу хтмл кода в джсон, сейчас просто uncaught прилагаю код на жс, пхп, и несколько функций, которые использую на стороне сервака
<script>
function check(t){
$.ajax({
url: 'im.php',
method: 'POST',
data: { "ts": t, "wait": 20, "group_id": <?php echo $wo['group_profile']['group_id'] ?> },
success: function(data){
try {
var d = JSON.parse(data);
localStorage.setItem("ts", d.ts);
console.log(d);
$('#helppp').html(d.content);
setTimeout(check(d.ts), 1000);
}catch(error) {
alert('Error parsing JSON:', error.message);
}
}
});
}
var t = localStorage.ts;
check(t);
</script>
im.php
<?php
// Последнее изменение файла
function getLastModified()
{
$ts_file = Wo_All_Chat_Select_Last_Time($_POST['group_id']);
return $ts_file;
}
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$ts = $_POST['ts'];
$wait = $_POST['wait'];
if ($ts === "undefined") {
$data['ts'] = getLastModified();
$data['content'] = Wo_All_Chat_SelectLast($_POST['group_id']);
echo json_encode($data);
return;
}
// Текущее время плюс ожидание
$w = (time() + $wait);
// Крутим бесконечный цикл
while (true) {
// Проверяем изменение файла
if ($ts < getLastModified()) {
// Сразу возвращаем ответ если было изменение
$data['ts'] = getLastModified();
$data['content'] = Wo_All_Chat_SelectLast($_POST['group_id']);
echo json_encode($data);
return;
}
// Отдаем ответ после максимального ожидания
if (time() >= $w) {
$data['ts'] = getLastModified();
$data['content'] = Wo_All_Chat_SelectLast($_POST['group_id']);
echo json_encode($data);
return;
}
// Спим секунду
sleep(1);
}
}
фкнкция ласт тайм
function Wo_All_Chat_Select_Last_Time($group_id){
global $wo, $sqlConnect;
if ($wo['loggedin'] == false) {
return false;
}
$query = mysqli_query($sqlConnect, "SELECT `date` FROM `Chat_Group` WHERE `group_id` = {$group_id} ORDER BY ID DESC LIMIT 1");
$res = mysqli_fetch_assoc($query);
return $res;
}
функция ласт селект чат
function Wo_All_Chat_SelectLast($group_id){
global $wo, $sqlConnect;
if ($wo['loggedin'] == false) {
return false;
}
$query = mysqli_query($sqlConnect, "SELECT `name`, `text` FROM `Chat_Group` WHERE `group_id` = {$group_id} ORDER BY ID DESC LIMIT 1");
$res = mysqli_fetch_assoc($query);
$name = $res['name'];
$text = $res['text'];
return "
\"<li>\"
\"<div class=\"group-chat-message\">\"
\"<div class\"group-chat-message-container group-chat-my-message\">\"
\"<span class=\"group-chat-message-username\">\"$name\"</span>\"
\"<br>\"
\"<span class=\"group-chat-message-content\">\"$text\"</span>\"
\"</div>\"
\"</div>\"
\"</li>\"";
}
да, я пытался изменить ласт функцию и возвращать просто массив данных , но положительного результата не дало
Ответы (1 шт):
Проблема была именно в файле с кодм пхп, итак, начну с начала, возможно, я тоже кому то помогу, решил посмотреть какой приходит джсон, и увидел фалс, в контенте, дальше полез в код функций пхп и понял, что у меня стоит проверка на логин, которая и ретернает фалс, но мои мучения на этом не остановились, джсон стабильно отказывался что то приходить, и тут я вспомнил, что нужно ещё подключить инит файл со всем, чем я пользуюсь, и о чудо, все заработало, при этом Лонг пуллинг работает пока без нареканий, но есть пару НО, долгая загрузка страницы, после отправки формы, возможно, это из-за сет таймаута, как только разберусь, сразу скину апдейт, а так, в общем, внимательности всем, и терпения, особенно таким Джунам как я