За последние 24 часа нас посетили 23883 программиста и 1737 роботов. Сейчас ищут 1829 программистов ...

Скилет чата, проблема с обновление сообщений

Тема в разделе "Сделайте за меня", создана пользователем Nixtn, 13 янв 2015.

  1. Nixtn

    Nixtn Новичок

    С нами с:
    12 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Не могу понять, как нормально вывести возвращаемые в JS json данные? Тоесть добавить новые сообщения в окно чата

    index.php
    Код (Text):
    1.  
    2. <? require_once('db.php'); ?>
    3. <!doctype html>
    4. <html>
    5. <head>
    6. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    7. <script type="text/javascript" src="js/jquery-2.1.3.min.js"></script>
    8. <script type="text/javascript" src="js/custom.js"></script>
    9. <link rel="stylesheet" type="text/css" href="style.css">
    10. <title>Проект 1</title>
    11. </head>
    12. <body onload="setInterval('update()', 1000)">
    13. <div id="chatarea">
    14. <?
    15. $query = mysql_query("SELECT * FROM messages");
    16. while($a = mysql_fetch_array($query)) {
    17.     echo "<p id=".$a['idmsg'].">".$a['message']."</p>";
    18. }
    19. ?>
    20. </div>
    21. <input type="text" id="newmsg"><input type="Submit" id="send" value="Send"><br>
    22. 1. Почему циркулирует сообщения после добавления своего;<br>
    23. 2. Как вывести в нужном виде возвращаемые json данные;
    24. </body>
    25. </html>
    library.php
    Код (Text):
    1.  
    2. <?
    3. require_once("db.php");
    4.  
    5. switch($_POST['do']) {
    6.     case 'add':
    7.         mysql_query("INSERT INTO messages VALUES(0, '$_POST[newmsg]')");
    8.         break;
    9.     case 'update':
    10.         $updmsg = array();
    11.         $query = mysql_query("SELECT * FROM messages WHERE idmsg > '$_POST[lastmsg]'"); //
    12.         while($a = mysql_fetch_array($query)) {
    13.             $updmsg[$a['idmsg']] = $a['message'];
    14.         }
    15.         if(!empty($updmsg)) echo json_encode($updmsg);
    16.         break;
    17. }
    custom.js
    Код (Text):
    1.  
    2. function update() {
    3.     var lastmsg = $("#chatarea p:last").attr("id");
    4.  
    5.     $.ajax({
    6.         url: "library.php",
    7.         method: "POST",
    8.         data: { do: "update", lastmsg: lastmsg }
    9.        
    10.     }).success(function(data) {
    11.         if(data!='') {
    12.             alert(data);
    13.         if(data.text){
    14.             for (var i = 0; i < data.text.length; i++) {
    15.                 // $('#chat-area').append($("<p>"+ data.text[i] +"</p>"));
    16.                 $("#chatarea").append("<p id=''>"+data.text[i]+"</p>");
    17.             }                                
    18.         }
    19.  
    20.         }
    21.  
    22.     });
    23.    
    24. }
    25. $(document).ready(function(){
    26.     $("#send").click(function(){
    27.         var newmsg = $("#newmsg").val();
    28.         $.ajax({
    29.             url: "library.php",
    30.             method: "POST",
    31.             data: { do: "add", newmsg: newmsg },
    32.             dataType: "json",
    33.         }).done(function(data) {
    34.                 $("#newmsg").val('');
    35.                 update();
    36.             });
    37.     });
    38. });
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. Nixtn

    Nixtn Новичок

    С нами с:
    12 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Как распарсить переменную 'data' в функции 'update' в custom.js . Я так понимаю тут нажна функция 'PARSEjson()' либо '$.jsonPARSE()' ?!
     
  4. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    если у вас там валидный json то вы можете работать с этими данными как с объектом js.
     
  5. Nixtn

    Nixtn Новичок

    С нами с:
    12 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Есть там объект. Как распарсить объект?
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Nixtn, а что в документации javascript не понятно по работе с объектами?
     
  7. Nixtn

    Nixtn Новичок

    С нами с:
    12 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Попытался поддержать название раздела форума))
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  9. Nixtn

    Nixtn Новичок

    С нами с:
    12 янв 2015
    Сообщения:
    5
    Симпатии:
    0
    Всем спасибо за ответы!