freislot
@freislot
Frontend-разработчик

Возможно ли подгрузить контент при помощи AJAX?

Вывожу на сайт последние записи из группы в ВК таким вот способом:

<?php
  $wall = file_get_contents("http://api.vk.com/method/wall.get?v=5.52&filter=others&domain=***&count=10");
  $wall = json_decode($wall);
  $wall = $wall->response->items;

  for ($i = 0; $i < count($wall); $i++) {
    $user = file_get_contents("http://api.vk.com/method/users.get?v=5.52&user_ids=".$wall[$i]->from_id."&fields=photo_100");
    $user = json_decode($user);
    $user = $user->response;
	echo "<img src='".$user[0]->photo_100."' />".$user[0]->first_name." ".$user[0]->last_name;
    echo "<p><b>".($i + 1)."</b>. <i>".$wall[$i]->text."</i><br /><span>".date("Y-m-d H:i:s", $wall[$i]->date)."</span></p>";
  }
?>


Я вообще не особо понимаю в php, js, ajax всё на уровне гуглокода. Собственно вопрос возник такой, возможно ли добавить кнопку "Больше записей" и при клике на нее без перезагрузки страницы получать еще 10 записей со сдвигом (offset=10 есть такая опция в ВК API) и добавлять эти записи в нужное место (ну скажем просто ниже, под теми, что уже выведены)?

Что-то гугление не помогает, т.к я не могу сформулировать вопрос грамотно, либо возможно мой способ получения данных вовсе некорректный, я видел что некоторые получают записи без php а при помощи js.

Буду признателен если ткнете в ту сторону куда копать, спасибо.
  • Вопрос задан
  • 952 просмотра
Решения вопроса 1
freislot
@freislot Автор вопроса
Frontend-разработчик
Спасибо Ingush Archakov сделал вот так, пока все работает как нужно, единственное мне нужно в конце скрипта делать не offset++ а прибавлять каждый клик на 10, я не знаю языка, не могу понять как это корректно делается)
var offset = 0;
    $(document).ready(function(){
      $('a.test').click(function(){
        $.ajax({
          url: "test.php",
          method: "GET",
          cache: false,
          data:"offset=" + offset,
          success:function(data){
                console.log(data); 
                $("body").append(data);
              }
            })
        offset++;
        console.log(offset);
      });
    });


Итак публикую решение своего вопроса, еще раз спасибо за наведение в нужную сторону.
JS
var offset = 10;
    $(document).ready(function(){
      $('a.test').click(function(){
        $.ajax({
          url: "test.php",
          method: "GET",
          cache: false,
          data:"offset=" + offset,
          success:function(data){
                console.log(data); 
                $("body").append(data);
              }
            })
        offset = offset + 10;
        console.log(offset);
      });
    });


PHP
<?php
  $wall = file_get_contents("http://api.vk.com/method/wall.get?v=5.52&filter=others&domain=****&count=10&offset=".$_GET["offset"]);
  $wall = json_decode($wall);
  $wall = $wall->response->items;

  for ($i = 0; $i < count($wall); $i++) {
    $user = file_get_contents("http://api.vk.com/method/users.get?v=5.52&user_ids=".$wall[$i]->from_id."&fields=photo_100");
    $user = json_decode($user);
    $user = $user->response;
	echo "<img src='".$user[0]->photo_100."' />".$user[0]->first_name." ".$user[0]->last_name;
    echo "<p><b>".($i + 1)."</b>. <i>".$wall[$i]->text."</i><br /><span>".date("Y-m-d H:i:s", $wall[$i]->date)."</span></p>";
?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
archakov06
@archakov06
Frontend-разработчик (ReactJS)
Можно и очень просто. Используя в запросе offset и count, посылай через AJAX эти параметры.

Изначально используй переменную в которой хранится A строк и B смещение. И когда придет запрос на твой скрипт, получай через $_GET параметры и вставляй в эти переменные.

А в JS при каждом вызове, прибавляй +N раз (n - кол-во новых записей).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы