0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 14
1

Вывод страницы с комментариями без перезагрузки

12.12.2016, 13:19. Показов 1902. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня всем

Решил написать сюда, т.к. тема похожая. Суть в следующем - есть страница с комментариями, надо, чтобы они выводились без перезагрузки. В принципе, я это сделал, но беда в том, что после того, как комментарий появился, следующий добавить не получается, надо обновлять страницу. Я в JQuery не силен, так что прошу помощи. Подозреваю, что беда в файле JavaScript. Вот его код
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$(function() {
    $("#myBut").click(function(){
        var name = $("#name").val();
        var date = $("#date").val();
        var message = $("#message").val();
        var filter = $("#filter").val();
        $.ajax({
            type: "POST",
            url: "add.php",
            data: "&name=" + name + "&date=" + date + "&message=" + message + "&filter=" + filter,
            cache: false,
            success: function(){
                $('#main').load('index.php');//обновление страницы
 
            }
        });
        return false;
});
    
});
Код страницы
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, maximum-scale=1">
<title>Комментарии</title>
<link rel="icon" href="favicon.png" type="image/png">
<link href="css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="css/style.css" rel="stylesheet" type="text/css"> 
<link href="css/font-awesome.css" rel="stylesheet" type="text/css"> 
<link href="css/animate.css" rel="stylesheet" type="text/css">
 
<!--[if lt IE 9]>
    <script src="js/respond-1.1.0.min.js"></script>
    <script src="js/html5shiv.js"></script>
    <script src="js/html5element.js"></script>
<![endif]-->
 
</head>
<body>
<?php
    require_once 'db.php';
?>
<div id="main">
<section id="Portfolio" class="content"> 
  
      
  
  <!-- Container -->
  <div class="container portfolio_title"> 
    <div class="section-title"><h2>Комментарии</h2> </div>
  </div>
  <!-- Container -->
  
  <div class="portfolio-top"></div>
  <div class="portfolio"> 
    <div id="filters" class="sixteen columns">
      <ul class="clearfix">
        <li><a id="all" href="#" data-filter="*" class="active"><h5>Все</h5></a></li>
        <li><a class="" href="#" data-filter=".plus"><h5>Положительные</h5></a></li>
        <li><a class="" href="#" data-filter=".minus"><h5>Отрицательные</h5></a></li>
      </ul>
    </div>
    <!--/Portfolio Filters --> 
    
    <!-- Portfolio Wrapper -->
    <div id="comment">
    <div class="isotope fadeInLeft animated wow" style="position: relative; overflow: hidden; height: 480px;" id="portfolio_wrapper"> 
      
    <?php
        $link = mysqli_connect($host, $user, $pass, $database) or die("Ошибка подключения к БД" . mysqli_error($link));
        mysqli_set_charset($link, "utf8");
 
        $query ="SELECT * FROM comments";
        $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
        
                
                //print_r($array);
        $data = array();
        while($row = mysqli_fetch_assoc($result)) {
        $data[] = $row;
        }
        
         foreach($data as $item) : ?>
      
       <div style="position: absolute; left: 0px; top: 0px; transform: translate3d(0px, 0px, 0px) scale3d(1, 1, 1); width: 337px; opacity: 1;" class="portfolio-item one-four isotope-item <?=$item['filter']?>">
        <div class="portfolio_img"> 
        <p class="user">Добавил: <span><?=$item['name'];?>,</span> Дата добавления: <span><?=$item['date_add'];?></span></p>
        <hr>
            <p><?=$item['text'];?></p> 
        </div>        
        </div>
        <?php endforeach; 
mysqli_close($link);    
    ?>
      
 
        </div>
 
    </div>
  
</div>
 
</section>
 
<div class="add_comment clearfix page_section">
<h2>Добавить комментарий</h2> 
<div class="container-fluid">
 
    <div class="row myRow">
        <div class="col-md-12">
            <form class="form-horizontal" role="form" action="add.php" method="post" id="form">
                <div class="form-group">
                    <label for="name" class="col-sm-2 control-label">Имя* </label>
                    <div class="col-sm-10">
                            <input type="name" name="name" class="form-control" id="name" />
                            <input type="hidden" id="date" name="date">
                    </div>
                </div>
                <div class="form-group">
                  <label for="message" class="col-sm-2 control-label">Cообщение*</label>
                            <div class="col-sm-10">
                                  <textarea name="message" id="message"></textarea>
                            </div>
              </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-12">
                    <select name="filter" id="filter">
                        <option value="plus">Положительный</option>
                        <option value="minus">Отрицательный</option>
                    </select>
                        <button type="submit" class="btn btn-success myBtn" id="myBut">Отправить комментарий</button>
                    </div>
                </div>
            </form>
  </div>
</div>
</div>
    
    </div>
<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/jquery-scrolltofixed.js"></script>
<script type="text/javascript" src="js/jquery.nav.js"></script> 
<script type="text/javascript" src="js/jquery.isotope.js"></script>
<script type="text/javascript" src="js/custom.js"></script>
<script type="text/javascript" src="js/ajax.js"></script>
 
</body>
</html>
Спасибо

 Комментарий модератора 
Один вопрос - одна отдельная тема!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2016, 13:19
Ответы с готовыми решениями:

Вывод вычислений без перезагрузки страницы
Есть кучка чекбоксов, каждый со своим value, при нажатии на каждый из них должно прибавляться...

Вывод данных из БД без перезагрузки страницы
В Общем у меня есть скрипт, но он обновляет и добавляет кроме новых так и все старые function...

Постраничный вывод, mysql сортировка без перезагрузки страницы
Как осуществить постраничный вывод, mysql сортировка без перезагрузки страницы(AJAX)? Отдельной...

Select и вывод данных из базы без перезагрузки страницы
Здравствуйте. Надеюсь, в тот форум пишу. Задача - вывести список подразделений предприятия, и по...

22
84 / 84 / 41
Регистрация: 14.02.2015
Сообщений: 320
12.12.2016, 21:49 2
SkazochNick, а в чем смысл этого дела?
Javascript
1
2
3
success: function(){
                $('#main').load('index.php');//обновление страницы
 }
0
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 14
12.12.2016, 22:05  [ТС] 3
Это дело как раз и перегружает страницу
А как надо написать?
0
84 / 84 / 41
Регистрация: 14.02.2015
Сообщений: 320
12.12.2016, 22:18 4
SkazochNick, у вас же задача - без обновления страницы загрузить комменты. Зачем обновлять страницу?
Вы отправляете запрос на add.php. Этот пхп-файл должен вам вернуть сей каммент обратно, и вы его вставляете на страницу посредством DOM-методов. Вот и все.

И на будущее: перезагрузка страницы осуществляется методом location.reload(). В вашем случае страница реально в браузере не перезагружается, а в нее просто подгружается код из индекса.
0
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 14
13.12.2016, 11:17  [ТС] 5
Голову сломал. Написал
Javascript
1
2
3
success: function(data){
$("#portfolio_wrapper").append(data);
}
#portfolio_wrapper - блок со всеми комментариями. Теперь в базу добавляется, но на странице не появляется. Только после перезагрузки. Может подскажете, как правильно сделать?
0
84 / 84 / 41
Регистрация: 14.02.2015
Сообщений: 320
13.12.2016, 15:15 6
SkazochNick, из этого куска кода ничего не ясно. Явных ошибок в нем нет.
Консоль смотрели? Содержание ответа сервера (data) смотрели?
0
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 14
13.12.2016, 15:42  [ТС] 7
Вот весь код
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(function() {
    $("#myBut").click(function(){
        var name = $("#name").val();
        var date = $("#date").val();
        var message = $("#message").val();
        var filter = $("#filter").val();
        $.ajax({
            type: "POST",
            url: "add.php",
            data: "&name=" + name + "&date=" + date + "&message=" + message + "&filter=" + filter,
            success: function(data){
                $("#portfolio_wrapper").append(data);
            }
        });
        return false;
});
    
});
Вот посмотрите, как это выглядит - http://vkohan.zzz.com.ua/comment.loc/
0
84 / 84 / 41
Регистрация: 14.02.2015
Сообщений: 320
13.12.2016, 15:52 8
Цитата Сообщение от SkazochNick Посмотреть сообщение
Вот посмотрите, как это выглядит
Вы в консоль смотрели? У вас же там ошибка. Есть подозрение, что из-за нее ваш код вообще не выполняется. Устраните ее. Это первое.
Второе - выведите в консоль содержание ответа сервера (то есть data), чтобы понимать, в чем суть.
0
the hardway first
Эксперт JS
2452 / 1830 / 902
Регистрация: 05.06.2015
Сообщений: 3,597
13.12.2016, 16:05 9
SkazochNick, как собираетесь выводить коммент, если в add.php стоит редирект на mail.ru?
0
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 14
13.12.2016, 16:10  [ТС] 10
Он не работает. Это я хотел проверить, как будет работать и забыл удалить. сейчас уберу

Добавлено через 3 минуты
Ошибки убрал. Как вывести в консоль ответ сервера?
0
the hardway first
Эксперт JS
2452 / 1830 / 902
Регистрация: 05.06.2015
Сообщений: 3,597
13.12.2016, 16:25 11
Цитата Сообщение от SkazochNick Посмотреть сообщение
и забыл удалить
Фейспалмище
Как посмотреть ответ сервера в браузере: открываешь консоль разработчика, находишь вкладку сеть и смотришь запрос, который нужен.
Миниатюры
Вывод страницы с комментариями без перезагрузки  
0
the hardway first
Эксперт JS
2452 / 1830 / 902
Регистрация: 05.06.2015
Сообщений: 3,597
13.12.2016, 16:26 12
Видите что приходит? А должен быть кусочек разметки для вставки в страницу
Цитата Сообщение от SkazochNick Посмотреть сообщение
Javascript
1
2
3
success: function(data){
  $("#portfolio_wrapper").append(data);
}
0
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 14
13.12.2016, 16:27  [ТС] 13
Да, не приходит ничего. Как исправить? Подскажите
0
84 / 84 / 41
Регистрация: 14.02.2015
Сообщений: 320
13.12.2016, 16:29 14
Цитата Сообщение от SkazochNick Посмотреть сообщение
Да, не приходит ничего. Как исправить? Подскажите
Наверное, нормально написать add.php - так, чтобы он возвращал ответ.
0
the hardway first
Эксперт JS
2452 / 1830 / 902
Регистрация: 05.06.2015
Сообщений: 3,597
13.12.2016, 16:31 15
SkazochNick, а вот это уже совсем другая история. Вам в другой раздел https://www.cyberforum.ru/php-beginners/
0
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 14
13.12.2016, 16:39  [ТС] 16
Вот файл add.php, что в нем не так?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
require_once 'db.php';
 
        $link = mysqli_connect($host, $user, $pass, $database) or die("Ошибка " . mysqli_error($link)); 
        mysqli_set_charset($link, "utf8");
 
        $name = trim(strip_tags($_POST["name"]));
        $date = date("j.n.Y");
        $message = trim(strip_tags($_POST["message"]));
        $filter = trim(strip_tags($_POST["filter"]));
 
        $query ="INSERT INTO comments VALUES(NULL, '$name','$date', '$message', '$filter')";
        $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
0
84 / 84 / 41
Регистрация: 14.02.2015
Сообщений: 320
13.12.2016, 16:46 17
SkazochNick, вам же написали - по поводу php есть раздел php.
А прежде чем туда идти, попробуйте найти в своем коде место, которое хоть что-то возвращает на клиент.
0
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 14
13.12.2016, 16:50  [ТС] 18
Какое-то непонятное отношение. Я попросил указать на ошибку в коде, конкретно, что не так. В ответ же получил только какие-то общие слова и в итоге отфутболивание на другую ветку форума.
Я уже перепробовал массу вариантов, прежде, чем написать сюда. Если вы такие мастера, то неужели в нескольких строках кода не можете увидеть ошибку и указать?

В общем, спасибо за помощь
0
84 / 84 / 41
Регистрация: 14.02.2015
Сообщений: 320
13.12.2016, 18:24 19
SkazochNick, причем здесь "отфутболивание"?
Вам ясно написали - проблема не в Js, а в PHP,и для этого есть отдельный раздел, где сидят именно php-программисты и отвечают.
Да и не видно по вашим 3-ем строкам кода, что вы "перепробовали массу вариантов".
В общем, нужно не обиженного из себя строить, а последовать совету и пойти в ветку php. И вообще нужно благодарным быть, что есть места, где помогают решить определенные задачи бесплатно.
0
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 14
13.12.2016, 18:35  [ТС] 20
Если вы не заметили, то кода было не три строки, а полностью. В этом вы легко убедитесь, если заглянете вверх страницы.

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

Что касается "массы вариантов", то вполне естественно, здесь их все приводить нет необходимости. Форум для того и существует, чтобы оказывать людям конкретную помощь. Кода не так много, чтобы нужно было потратить кучу времени на его разбор. Так что если бы вы просто исправили мою ошибку, то времени это заняло бы гораздо меньше, чем вы потратили на бессмысленные ответы.

Цитата Сообщение от vettel Посмотреть сообщение
И вообще нужно благодарным быть, что есть места, где помогают решить определенные задачи бесплатно.
Да уж, помогли вы весьма и весьма. Наверное, корона мешает такие простые задачи (на ваш взгляд) решать.
В общем, всех благ и успехов на ниве помощи новичкам.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2016, 18:35
Помогаю со студенческими работами здесь

Вывод значений из бд при выборе select без перезагрузки страницы
Здравствуйте есть код в котором я из бд вывожу данные в селект подскажите как сделать чтоб при...

Загрузка данных из другой страницы без перезагрузки основной страницы
Не знаю в правильной ли ветке я задаю вопрос. Ответьте пожалуйста как сделать чтобы при нажатии,...

Динамическая подмена контента страницы по клику на ссылку, без перезагрузки всей страницы
Здравствуйте! Честно говоря точно не знал какими средствами можно реализовать, то что мне нужно,...

Подмена контента страницы по клику на ссылку меню, без перезагрузки всей страницы
Доброго времени суток! у меня имеется два блока, один блок - меню иерархическое аккордеон на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru