
14.12.2019, 23:29
|
Аспирант
|
|
Регистрация: 15.04.2019
Сообщений: 72
|
|
Не работает простенький ajax-чатик на файловой системе
Здравствуйте) Не успел вчера ночью достать здесь всех со своим корявым аджакс-запросом (помогли разобраться, спс), как новая сложность с мини-чатиком. Не работает(( Файлов там несколько.
Это config.php с файлом для будущих сообщений
<?php
$filename = "messages.txt";
?>
Файл show.php с алгоритмом перебора файлов с сообщениями
<?php
require "config.php";
$file = file($filename);
$count = count($file);
for($i = $count; $i-- > 0;){
echo $file[$i];
echo "<br>";
}
?>
Файл send.php с получением данных из инпутов и внесением всего этого в файл-messages
<?php
require "config.php";
$sender = $_POST["sender"];
$text = $_POST["message"];
$message = "\n$sender написал $message";
$file = fopen($filename,"a");
fwrite($file,$message);
fclose($file);
?>
Файл-html собственно с разметкой и js-функциями для посылки и получения данных.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Ajax</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script type="text/javascript">
function show(){
$.ajax({
url:"show.php",
timeout:10000,
success:function(data){
$("#messages").html(data)
},
error:function(){
$("#messages").html("Не удалось загрузить сообщение")
}
})
}
function send(){
var sender = $("#sender").val()
var message = $("#message").val()
if(sender.length > 0 && message.length > 0){
$.ajax({
url:"show.php",
type:"post",
timeout:10000,
data:{"sender":sender,"message":message},
success:function(data){
document.getElementById("message").value = ""
$("#send_message_result").html("")
},
error:function(){
$("#send_message_result").html("Не удалось загрузить сообщение")
}
})
} else if(sender.length==0){
$("#send_message_result").html("Введите имя");
} else if(message.length==0){
$("#send_message_result").html("Введите текст");
}
}
var Interval = 1000;
show();
setInterval("show()",Interval);
</script>
</head>
<body>
<h1>Чат</h1>
Имя <br>
<input type="text" id="sender"><br>
Сообщение <br>
<textarea id="message" cols="30" rows="10"></textarea><br>
<input type="submit" value="send" onclick="send();">
<div id="send_message_result"></div>
<hr>
<div id="messages"></div>
</body>
</html>
|
|

14.12.2019, 23:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Иса Мирзоев, сразу, чтобы долго не говорить, выбрасывайте messages.txt и еже с ним, и для этих целей используйте базу.
|
|

14.12.2019, 23:42
|
Аспирант
|
|
Регистрация: 15.04.2019
Сообщений: 72
|
|
Сообщение от laimas
|
Иса Мирзоев, сразу, чтобы долго не говорить, выбрасывайте messages.txt и еже с ним, и для этих целей используйте базу.
|
Мне не хватит знаний, чтобы с БД все это связать. На файликах как-то проще сам механизм понять. Я даже не выдумывал ничего, а из видео списал код, отладчик молчит, и все равно что-то не так)
|
|

14.12.2019, 23:47
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Иса Мирзоев
|
Мне не хватит знаний, чтобы с БД все это связать.
|
Не так страшен черт, как его малютка, со временем придет и понимание.
Сообщение от Иса Мирзоев
|
На файликах как-то проще сам механизм понять.
|
На файликах будет очень много минусов. Кстати, так как вы это делаете, неизбежны проблемы - нужно ставить блокировку на файл.
База сама занимается блокировкой, база это индексирование, что в данном случае очень большой плюс, ну и прочие выгоды.
Начитайте изучать базу по маленьку, с простых примеров, а файлики для данной задачи не годятся.
|
|

14.12.2019, 23:51
|
Аспирант
|
|
Регистрация: 15.04.2019
Сообщений: 72
|
|
Сообщение от laimas
|
Не так страшен черт, как его малютка, со временем придет и понимание.
На файликах будет очень много минусов. Кстати, так как вы это делаете, неизбежны проблемы - нужно ставить блокировку на файл.
База сама занимается блокировкой, база это индексирование, что в данном случае очень большой плюс, ну и прочие выгоды.
Начитайте изучать базу по маленьку, с простых примеров, а файлики для данной задачи не годятся.
|
Я Вас понимаю, просто самому интересно, где же ошибка, если я все списывал из ролика) И перепроверял, и бегло вроде косяков не заметно. Так-то я с Вами согласен, что минусов полно, просто не понимаю логики ajax-запросов, что куда отправляется и как принимается... Думал, вроде ролик короткий, что-то можно сделать быстро и понять попытаться)) Простую гостевую книгу на базе данных-то написать можно спокойно.
Вот он, если что))
https://www.youtube.com/watch?v=TYRvlMG6gR4
|
|

15.12.2019, 00:09
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Иса Мирзоев
|
how.php с алгоритмом перебора файлов с сообщениями
|
Это какой такой алгоритм, если функция file() выполняет это, о каком переборе файлов речь?
|
|

15.12.2019, 00:18
|
Аспирант
|
|
Регистрация: 15.04.2019
Сообщений: 72
|
|
Сообщение от laimas
|
Это какой такой алгоритм, если функция file() выполняет это, о каком переборе файлов речь?
|
В цикле for перебирает))
Я сейчас с БД скину вариант. У меня информация добавляется в базу, но не выводится, 99% что я неправильно функцию success написал) Мне сюда прислать или новую тему создать, как думаете лучше будет?)
|
|

15.12.2019, 00:22
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Иса Мирзоев
|
В цикле for перебирает))
|
Что? Эта функция разбивает содержимое файла (по окончанию строк) и помещает все в массив. Вот этот массив можно перебирать.
|
|

15.12.2019, 00:24
|
Аспирант
|
|
Регистрация: 15.04.2019
Сообщений: 72
|
|
Сообщение от laimas
|
Что? Эта функция разбивает содержимое файла (по окончанию строк) и помещает все в массив. Вот этот массив можно перебирать.
|
Ааа, понятно)) Спасибо))
Я тогда новую тему создам для варианта с БД, чтобы не путался никто)
|
|

15.12.2019, 00:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Иса Мирзоев
|
информация добавляется в базу, но не выводится, 99% что я неправильно функцию success написал
|
Код на клиенте никакого отношения к базе вообще не имеет, даже РНР сам ничего из базы не выбирает, он только предоставляет инструменты для удобной работы с базой. А не выбирает потому, что и структура базы, видимо, не удачная, и запросы на выборку тоже.
|
|
|
|