За последние 24 часа нас посетили 19792 программиста и 1626 роботов. Сейчас ищут 1930 программистов ...

ajax запрос возвращает всю страницу

Тема в разделе "JavaScript и AJAX", создана пользователем sowelanes, 30 май 2016.

  1. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    День добрый. Делаю lazy-load ленту новостей. Проблема в том, что ajax запрос возвращает всю html страницу. Проверяю через консоль.
    Кусок скрипта:
    PHP:
    1. <script>
    2.     $(document).ready(function(){
    3.         var num = 15;
    4.         $(window).scroll(function (){
    5.             if ($(window).scrollTop() + $(window).height() >= $(document).height()){
    6.                 $.ajax({
    7.                     url: 'http://domain.com/feed',
    8.                     method: 'GET',
    9.                     data: {"num" : num}
    10.                 }).done(function(data){
    11.                     console.log(data);  // проверяю результат запроса
    12.                 });
    13.             }
    14.         });
    15.     });
    16. </script>
    Как бы отрабатывает, при прокрутке вниз прилетает нужный мне get - http://domain.com/feed?num=15, но в консоли, вместо результатов запроса (которые я возвращаю в json_encode) вываливается html содержимое всей страницы. Подскажите пожалуйста, где я свернул не туда?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Кто писал скрипт который отдаёт всю страницу? Может на его логику посмотреть.

    https://ru.wikipedia.org/wiki/Домены_для_примеров
     
  3. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    Я извиняюсь, но я не понял, что Вы имеете ввиду?

    Там живой домен, это просто в примере я указал такой
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    вместо domain.com советуют использовать example.com

    Задача решена?
     
  5. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    Нет не решена. У меня там стоит мой "живой" домен, суть не в этом.
    Суть в том, что скрипт работает, я при прокрутке до конца страницы получаю запрос на сервер вида http://домен/feed?num=15, и даже с правильными данными из обработчика, но это все обернуто в код всей страницы. Структурно то, что я вижу в консоли выглядит так:
    <html>
    .... подключение в head jquery и скрипта
    .... контент страницы....
    ---> результат работы скрипта (следующие 15 записей)
    ..... контент страницы....
    </html>

    Я не понимаю, почему так происходит, возможно это из-за того, что http://домен/feed использует единую точку входа через index.php?
     
  6. denis01

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

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

    возможно ты это не учитываешь, когда запрос num идёт, отдавай только нужную информацию и всё.
     
  7. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    Запрос вида "select * from news limit $num, 15"
    Я не совсем понял, Вашу фразу:
    Я и так отдаю только нужный мне массив новостей.
     
  8. denis01

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

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

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    Как я могу отдавать лишние данные если массив news содержит только выборку из бд?
    Вы говорите какими-то абстракциями, можете конкретно указать на мою ошибку?
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    У меня такое бывает, когда я в адресе ошибаюсь, и мне 404 вместо аякса приходит.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не, если приходят нужные данные, но с шаблоном, то видимо ты не отключаешь отрисовку шаблона страницы. Получается так.
     
  12. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @sowelanes можешь PHP код показать, тогда мы не будем гадать и возможно увидим что-то в нём.
     
  13. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    http://pastebin.com/aqXxYDqV
     
  14. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну вот, я не вижу там html кода, похоже всё правильно, только json вернёт.
    Может веб сервер или PHP настроен как-то отдавать HTML в любом случаи?
    Возможно ты показал не весь код, и спрятал который выводит тот HTML от которого надо избавится.
     
  15. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    В том то и дело, что это весь код)
     
  16. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Давай ссылку где можно посмотреть в живую что там происходит
     
  17. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Дык, отправь данные не через ajax. Открой адрес в браузере. Посмотри что сервер отдает а дальше обычный дебаг.
     
  18. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    значит урл не торт :D
     
  19. sowelanes

    sowelanes Активный пользователь

    С нами с:
    11 дек 2014
    Сообщения:
    101
    Симпатии:
    0
    Решил проблему вынеся метод возвращающий данные в отдельный контроллер.
    Проблема таки в том, что первоначальный вариант шел через контроллер Page, а он изначально генерит саму страницу по темплейту и только после отрабатывает запрос.
    denis01 был прав, в таком варианте я цеплял помимо результатов лишний html.
    Всем спасибо.