Ajax запрос в php и возвратом данных обратно
Заново переписал вопрос:
Генерируется страничка чата на php, в ней выведенно определённое количество сообщений, необходимо запомнить сколько сообщений было в БД на момент её генерации на сервере, у этой страницы есть файл js, необходимо каждую секунду, выполнять ajax запрос на сервер и проверять нынешнее количество сообщений в БД, соответственно, если оно будет отличатся, от того количества, которое было при генерации страницы, то мы обновляем страницу. Чтобы вывести новые сообщения.
Я прошу, помочь написать ajax запрос правильный на js(Jquery). А также как при генерации страницы передать значение переменной php, переменной в js.
Файл main.js:
var fn=function(){
// Неправильный ajax запрос
let id_product = 321;
let qty_product = 2;
$.ajax({
url: "check.php",
// dataType: "json", // Для использования JSON формата получаемых данных
method: "GET", // Что бы воспользоваться POST методом, меняем данную строку на POST
data: {"id_product": id_product,"qty_product": qty_product},
success: function(data) {
console.log(data); // Возвращаемые данные выводим в консоль
}
});
if (nowmess > prevmess){
window.location.reload(); // Обновляем страницу
}
setTimeout(arguments.callee,1000);
}
setTimeout( fn,1000 );
Готовый код check.php:
<?php
require 'db.php'; // Подключаем файл управление базой данных
$colh = R::count('messages'); // Достаем количество сообщений в
echo $colh; // Отправляем обратно
?>
Ответы (2 шт):
"У меня есть файл php, и в нём лежит скрипт js" -- не надо так. php-скрипты в php-файлы, js-скрипты в js-файлы.
Вместо return надо echo т.к. data в аргументе аякса -- это строка, которую выведет php скрипт. У тебя ничего сейчас не выводится -- ответ всегда будет пустой.
Ну вот, разобрался. Готовый код js, привязанного к странице файла:
var fn=function(){
var nowmess;
$.ajax({
url: "check.php",
// dataType: "json", // Для использования JSON формата получаемых данных
method: "GET", // Что бы воспользоваться POST методом, меняем данную строку на POST
data: {"nowmess": nowmess},
success: function(data) {
nowmess = data;
if (nowmess > prevmess){
window.location.reload(); // Обновляем страницу
}
}
});
setTimeout(arguments.callee, 1000);
}
setTimeout(fn, 1000);
И на самой странице сохранил переменную из php в js:
<script>
var prevmess = <?php echo json_encode($colm); ?>;
</script>