Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Ajax+prepend пробелы. (https://javascript.ru/forum/jquery/22188-ajax-prepend-probely.html)

odgrand 09.10.2011 21:07

Ajax+prepend пробелы.
 
Код:

<script type="text/javascript">
$(document).ready(function(){
    show(); 
    setInterval('show()',1000);
});
function show(){
  $.ajax({
          url: "action1.php",
          type: "GET",
          cache: false,
          success: function(response){
 

                $("#content").prepend(response);

          }
        });
   
}
</script>

action1.php

Код:

<?php
session_start();
include("bd.php");
  $result = mysql_query("SELECT * FROM vopr ORDER BY date DESC",$db); 
   
      $comment = mysql_fetch_array($result);
          if($_SESSION['datev']<$comment['date']){       
          $_SESSION['datev']=$comment['date'];
          printf("<div class='commentBlocknew'>
          <div class='name'>%s</div>
          <div class='text'>%s</div>
                  <div class='text'>%s</div>
          </div>",$comment['date'],$comment['nick'],$comment['msg']); 
               
       
    }
       
 
?>

Проблема в том что prepend постоянно приклеивает пробелы " " до бесконечности
Как это исправить?Извиняюсь если вопрос глупый. Только учусь.

DjDiablo 09.10.2011 21:40

setInterval('show()',1000);
вот это тебе нафига ?
на кой тебе get запрос каждую секунду?
Если в базе небудет комента с датой новее чем в сессии, сервер же нешиша тебе невернёт. И это нешиша ты благополучно добавишь себе через prepend, чтобы потом искренне удивляться откуда оно там взялось.

Задумайся кстатии над перспективами запроса к базе данных каждую секунду.
Это сто пользователей будут генерировать только своим присутствием сотню sql запросов каждую секунду.
Это что-то вроде DoS атаки на сервер ))

odgrand 09.10.2011 22:02

Мне нужно что бы информация на страничке обновлялась как только в базе появилась новая запись, я понимаю, что если записи новой не появилось, то сервер не чего не возвращает, и потом это не чего прикрепляется с помощью prepend, но как избежать этого?тоесть мне нужно условие какое то что если сервер вернул не шиша то не чего не делать, если сервер вернул строку, то прелеплять ее...как это сделать?)

Я пробовал в action1.php добавить условие else { echo 0; }. А в скрипт if (response !=0 ){ $("#content").prepend(response);
} почему то не вышло.

Время запроса я потом конечно же увеличу. Это только временно. Пока надо решить проблему с пустым prepend

DjDiablo 09.10.2011 22:18

response полюбому не равен нулю, потому что response это не число.
response в твоём случае текст.
Если хочется сравнить с нулём то быть может response.length != 0 прокатит лучше :)

И да кстати вместо setInterval юзай уж тогда timeOut, а то если на определённом браузере кто-то переключится на другую вкладку а потом через часок вернётся обратно, твоему серверу придётся несладко от 3600 запросов полученных почти единовременно.


Часовой пояс GMT +3, время: 19:08.