Забыли пароль?
Запросите новый здесь.

Автор темы: Kanaletto
ID темы: 1881
Информация:
Тема содержит 12 сообщения, была просмотрена 7033 раз.
Просмотр темы
PHP-Fusion Russia » Веб-разработка » Javascript, ajax, jquery
 Распечатать тему
Проблема с AJAX. Не обновляется переменная.
Kanaletto
Здравствуйте, решил сделать кнопку "Загрузить еще" как в соц. сети vk.com. Проблема возникла в том, что переменная, которая отвечает за номер с которого происходит отбор данных из базы данных почему то не увеличивается. И почему то каждый раз после нажатия на show_more данные выводятся сначала по 5 штук, потом по 10, потом по 15 и т.д. Обновления данных не происходит, то есть после каждого нажатия на show_more загружаются сначала последние 5 записей, потом эти же 5 записей + еще 5 которые перед ними стоят в базе данных и т.д.

Скачать исходники  Код
<script type="text/javascript">
                  $(document).ready(function(){
                          var dbnum = 5;
                          $("#show_more").click(function()
                                        {
                                                $.ajax({
                                                   type: "POST",
                                                   url: "download-functions.php",
                                                   data: {"dbnum":dbnum},
                                                   dataType: "json",
                                                   success: function(out)
                                                   {
                                                         $("#note").ajaxComplete(function(event, request, settings)
                                                         {
                                                                 if (out.status) {
                                                                   dbnum = dbnum + 5;     
                                                                   $('#result').append(out.message);
                                                                 }
                                                         });
                                                   }
                                           });
                                        });
                  });
                </script>


 
Rush
сомневаюсь что у $('#note'ad есть событие ajaxComplete
 
Web
Kanaletto
Всмысле? А как должно быть?
 
Rush
Скачать исходники  Код
 $(document).ready(function(){
                          var dbnum = 5;
                          $("#show_more").click(function(e)
                                        {
                                                e.preventDefault();
                                                $.ajax({
                                                   type: "POST",
                                                   url: "download-functions.php",
                                                   data: {"dbnum":dbnum},
                                                   dataType: "json",
                                                   success: function(out)
                                                   {
                                                                 if (out.status) {
                                                                   dbnum = dbnum + 5;     
                                                                   $('#result').append(out.message);
                                                                 }
                                                   }
                                           });
                                        });
                  });
                </script>



dbnum будет увеличиваться, только после того как запрос выполнится. ну и на сервере проверь код
 
Web
Kanaletto
На сервере код работает, только происходит то, что я в первом сообщении написал: "...переменная, которая отвечает за номер с которого происходит отбор данных из базы данных почему то не увеличивается. И почему то каждый раз после нажатия на show_more данные выводятся сначала по 5 штук, потом по 10, потом по 15 и т.д. Обновления данных не происходит, то есть после каждого нажатия на show_more загружаются сначала последние 5 записей, потом эти же 5 записей + еще 5 которые перед ними стоят в базе данных и т.д."
 
FILON
Думаю, стоит проверить SQL-запрос на корректность выборки записей с использованием параметра LIMIT:

LIMIT [НАЧАЛЬНОЕ_ЗНАЧЕНИЕ], [КОЛИЧЕСТВО_ЗАПИСЕЙ]

В вашем скрипте, вероятно, [НАЧАЛЬНОЕ_ЗНАЧЕНИЕ] равно нулю, а меняется только [КОЛИЧЕСТВО_ЗАПИСЕЙ]. Отсюда и получается, что с 0 позиции Вы получаете сначала 5, потом 10 и т.д. записей.
What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
 
Kanaletto
Вот код php:
Скачать исходники  Код
$offset = $_REQUEST['dbnum'];

function select_data_3($offset)
{
    $query = mysql_query("SELECT * FROM statevent ORDER BY `date` DESC LIMIT ".$offset.",5");
    if(mysql_num_rows($query) > 0)
    {
        while($row = mysql_fetch_array($query))
        {
            $result[] = $row;
        }
        return $result;
    }
    else
    {
        return false;
    }
}

$result = select_data_3($offset);




Кучу раз перепроверил этот код, всё работает как надо.
 
FILON
Попробуйте заменить:
Загрузить источник  GeSHi: PHP
  1. $offset = $_REQUEST['dbnum'];
Добавлено за 0.021 секунд, используя GeSHi 1.0.8.10

на:
Загрузить источник  GeSHi: PHP
  1. $offset = (isset($_POST['dbnum']) && preg_match("#^[0-9]+$#", $_POST['dbnum']) ? $_POST['dbnum'] : 0);
Добавлено за 0.023 секунд, используя GeSHi 1.0.8.10

What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
 
Kanaletto
Не помоглоac
 
Vova
Kanaletto написал:

Не помогло:(


Пробуй.

Загрузить источник  GeSHi: HTML
  1. #load{width:190px;height:30px;text-align:center; margin: 10px auto;}
  2. #load div{margin: 5px;cursor:pointer; background: #6483aa;color:#fff;padding: 4px 10px 4px 10px; border:1px solid #2f4561;-webkit-border-radius: 2px;-moz-border-radius: 2px; border-radius: 2px;}
  3. <script type='text/javascript' src='http://8gamers.ru/js/jquery.js'></script>
  4. <script type="text/javascript">
  5. $(document).ready(function(){
  6. $("#imgLoad").hide();
  7. });
  8. var dbnum = 5;
  9. $(function() {
  10. $("#load div").click(function(){
  11. $("#imgLoad").show();
  12. $.ajax({
  13. url: "v.php",
  14. type: "GET",
  15. data: {"dbnum": dbnum},
  16. cache: false,
  17. success: function(response){
  18. if(response == 0){
  19. alert("No news");
  20. $("#imgLoad").hide();
  21. }else{
  22. $("#contentindex").append(response);
  23. dbnum = dbnum + 5;
  24. $("#imgLoad").hide();
  25. }
  26. }
  27. });
  28. });
  29. });
  30. <div id='contentindex'></div>
  31. <div id='load'><div>10 news</div><img src='loading.gif' id='imgLoad'></div>
Добавлено за 0.003 секунд, используя GeSHi 1.0.8.10


Загрузить источник  GeSHi: PHP
  1. $offset = $_GET['dbnum'];
  2.  
  3. function select_data_3($offset)
  4. {
  5. $query = mysql_query("SELECT * FROM pages ORDER BY `time` DESC LIMIT ".$offset.",5");
  6. if(mysql_num_rows($query) > 0)
  7. {
  8. while($row = mysql_fetch_array($query))
  9. {
  10. $result[] = $row;
  11. echo $row['title']." - ".$row['id']."<br>";
  12. }
  13. return $result;
  14. }
  15. else
  16. {
  17. return false;
  18. }
  19. }
  20.  
  21. $result = select_data_3($offset);
Добавлено за 0.021 секунд, используя GeSHi 1.0.8.10

Изменил(а) Vova, 04.11.2013 11:34
 
Web
Kanaletto
Благодарю, всё работает. ab
 
Vova
Kanaletto написал:

Благодарю, всё работает. ab


+. Сила мысли. Если что пиши.
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум: