Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 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>
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2019, 23:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Иса Мирзоев, сразу, чтобы долго не говорить, выбрасывайте messages.txt и еже с ним, и для этих целей используйте базу.
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2019, 23:42
Аспирант
Отправить личное сообщение для Иса Мирзоев Посмотреть профиль Найти все сообщения от Иса Мирзоев
 
Регистрация: 15.04.2019
Сообщений: 72

Сообщение от laimas Посмотреть сообщение
Иса Мирзоев, сразу, чтобы долго не говорить, выбрасывайте messages.txt и еже с ним, и для этих целей используйте базу.
Мне не хватит знаний, чтобы с БД все это связать. На файликах как-то проще сам механизм понять. Я даже не выдумывал ничего, а из видео списал код, отладчик молчит, и все равно что-то не так)
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2019, 23:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Иса Мирзоев
Мне не хватит знаний, чтобы с БД все это связать.
Не так страшен черт, как его малютка, со временем придет и понимание.
Сообщение от Иса Мирзоев
На файликах как-то проще сам механизм понять.
На файликах будет очень много минусов. Кстати, так как вы это делаете, неизбежны проблемы - нужно ставить блокировку на файл.

База сама занимается блокировкой, база это индексирование, что в данном случае очень большой плюс, ну и прочие выгоды.

Начитайте изучать базу по маленьку, с простых примеров, а файлики для данной задачи не годятся.
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2019, 23:51
Аспирант
Отправить личное сообщение для Иса Мирзоев Посмотреть профиль Найти все сообщения от Иса Мирзоев
 
Регистрация: 15.04.2019
Сообщений: 72

Сообщение от laimas Посмотреть сообщение
Не так страшен черт, как его малютка, со временем придет и понимание.

На файликах будет очень много минусов. Кстати, так как вы это делаете, неизбежны проблемы - нужно ставить блокировку на файл.

База сама занимается блокировкой, база это индексирование, что в данном случае очень большой плюс, ну и прочие выгоды.

Начитайте изучать базу по маленьку, с простых примеров, а файлики для данной задачи не годятся.
Я Вас понимаю, просто самому интересно, где же ошибка, если я все списывал из ролика) И перепроверял, и бегло вроде косяков не заметно. Так-то я с Вами согласен, что минусов полно, просто не понимаю логики ajax-запросов, что куда отправляется и как принимается... Думал, вроде ролик короткий, что-то можно сделать быстро и понять попытаться)) Простую гостевую книгу на базе данных-то написать можно спокойно.
Вот он, если что))
https://www.youtube.com/watch?v=TYRvlMG6gR4
Ответить с цитированием
  #6 (permalink)  
Старый 15.12.2019, 00:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Иса Мирзоев
how.php с алгоритмом перебора файлов с сообщениями
Это какой такой алгоритм, если функция file() выполняет это, о каком переборе файлов речь?
Ответить с цитированием
  #7 (permalink)  
Старый 15.12.2019, 00:18
Аспирант
Отправить личное сообщение для Иса Мирзоев Посмотреть профиль Найти все сообщения от Иса Мирзоев
 
Регистрация: 15.04.2019
Сообщений: 72

Сообщение от laimas Посмотреть сообщение
Это какой такой алгоритм, если функция file() выполняет это, о каком переборе файлов речь?
В цикле for перебирает))
Я сейчас с БД скину вариант. У меня информация добавляется в базу, но не выводится, 99% что я неправильно функцию success написал) Мне сюда прислать или новую тему создать, как думаете лучше будет?)
Ответить с цитированием
  #8 (permalink)  
Старый 15.12.2019, 00:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Иса Мирзоев
В цикле for перебирает))
Что? Эта функция разбивает содержимое файла (по окончанию строк) и помещает все в массив. Вот этот массив можно перебирать.
Ответить с цитированием
  #9 (permalink)  
Старый 15.12.2019, 00:24
Аспирант
Отправить личное сообщение для Иса Мирзоев Посмотреть профиль Найти все сообщения от Иса Мирзоев
 
Регистрация: 15.04.2019
Сообщений: 72

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает свое меню после AJAX AnonimS jQuery 6 07.02.2018 21:51
Просто не работает ajax Nikidze AJAX и COMET 4 14.12.2017 13:34
Не работает ajax при OnClick по ссылке firefox govorusha AJAX и COMET 8 06.06.2015 14:34
Не работает простенький скрипт в ie assd18 Internet Explorer 4 29.03.2013 19:50
Prototype + Ajax - не работает в IE, FF. silvek Prototype & script.aculo.us 0 30.08.2008 16:06