Как я могу проверить ответ Jquery Ajax Call для загрузки дополнительных сообщений - PullRequest
0 голосов
/ 14 июня 2011

Я пытаюсь создать функцию «Загрузить еще», в которой делается запрос через jquery и добавляются другие сообщения.В основном я использую этот код:

function loadMore(pageNo) {
  var url = '/users?page=';
  $.get(url + pageNo, function(response) {
    $("#users").append(response);
  });
}

$(document).ready(function() {
  var currPage = 1;
  $("a.next").click(function() {
  loadMore(++currPage);
  });
});

Все работает отлично, но проблема в том, что я обрабатываю ответ, если больше нет сообщений для загрузки.

По сути, мне нужно проверить ответ и, если оно пустое, выполнить какое-либо действие, например скрыть ссылку «загрузить больше», что я знаю, как это сделать.Мне просто нужна помощь с проверкой ответа.Я представляю что-то в этом роде (некоторый псевдо-код), но не могу понять это.Нет гуру jquery: (*

function loadMore(pageNo) {
  var url = '/users?page=';
  $.get(url + pageNo, function(response) {
    if response not blank
      $("#users").append(response);
    else
      hide anchor or change text to "No More Posts"
    end
  });
}

Мой сервер отвечает кодом 200, хотя сообщений больше нет, должен ли сервер отвечать по-другому, если нет больше сообщений для загрузки?Думаю, я просто не знаю, как правильно обрабатывать случай, когда больше нет сообщений для загрузки. Сейчас ничего не происходит, и мое приложение не дает пользователю никаких отзывов, указывающих, что они загрузили все доступные сообщения.

Спасибо большое!

Ответы [ 2 ]

0 голосов
/ 14 июня 2011

Есть несколько способов сделать это, но то, что у вас есть в вашем коде sudo, правильно.В зависимости от того, в каком формате находится ваш «ответ», вы можете проверить значение ответа.Если бы это был просто текст или html, вы можете просто проверить его по пустой строке.

Я лично возвратил бы объект JSON с сервера с двумя значениями, флагом have_more и флагом данных, а затем вы могли бы проверитьответ такой:

if(response.have_more)
{
    $("users").append(response.data);
}
else
{
    //hide more link
}

Вы можете построить массив JSON в php на сервере с помощью чего-то вроде

<?php
$query_results = getPosts(offset, amount);
if(count($query_results) > 0)
{
    $json['data'] = $query_results;
    $json['have_more'] = true;
}
else
{
    $json['have_more'] = false;
}
echo json_encode($json);

Использование объекта JSON может показаться излишним, но этоза передовой опыт, особенно если вы решите вернуть некоторые дополнительные данные в будущем.

0 голосов
/ 14 июня 2011
function loadMore(pageNo) {
  var url = '/users?page=';
  $.get(url + pageNo, function(response) {
    if (response == "") {
        $("a.next").hide();
    }
    else {
        $("#users").append(response);
    }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...