Создание Div "Последние новости" с ajax, если файл существует? - PullRequest
1 голос
/ 28 августа 2009

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

например. каждая страница (динамическая / статическая) имеет пустое значение с идентификатором:

<div id="breaking"></div>

Есть ли способ при загрузке страницы проверить ajax, если на сервере существует файл (скажем, Breaking.html). Если это не так, div остается пустым, если он существует, он заполняет div содержимым файла:

<div id="breaking">Edward Kennedy passes away. Details to follow.</div>

Я думал, что однажды увидел нечто подобное описанному. Это был бы отличный способ объявить последние новости как на динамических страницах, так и на страницах, которые были сгенерированы как статические страницы для снижения нагрузки на сервер, но не могут истекать и восстанавливаться в течение некоторого времени.

Ответы [ 4 ]

2 голосов
/ 28 августа 2009

Вы можете попробовать обновить div с помощью jQuery , например, в Этот вопрос о стеке потока .

jQuery означает, что вам не нужно писать слишком скучный Javascript и вы можете сосредоточиться на классных вещах с приятным OO-интерфейсом. Вот фрагмент кода из вопроса:

function update() {
  $("#notice_div").html('Loading..'); 
  $.ajax({
    type: 'GET',
    url: 'response.php',
    timeout: 2000,
    success: function(data) {
      $("#some_div").html(data);
      $("#notice_div").html(''); 
      window.setTimeout(update, 10000);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
      $("#notice_div").html('Timeout contacting server..');
      window.setTimeout(update, 60000);
    }
}

Что должно дать вам преимущество. Кроме того, книга jQuery может быть хорошей идеей, если вы хотите использовать ее много (но онлайн-документы тоже хороши)

2 голосов
/ 28 августа 2009

Вы не можете проверить, существует ли файл с использованием JavaScript / AJAX. Для этого вам понадобится кодировка на стороне сервера.

Один из способов заключается в том, чтобы ваш метод JS вызывал веб-службу, которая могла бы выполнять file.exist, и, если он существует, он возвращает содержимое файла обратно. В противном случае он просто возвращает пустой поток. Тогда клиент увидит, будет ли длина ответа> 0, если это так, а затем отобразит содержание последних новостей.

Вы можете просто заставить метод JS попытаться загрузить файл BreakingNews.html и, в зависимости от того, как у вас настроены ваши 404, загрузить его содержимое в div. Вам просто нужно перехватить 404 ответа, которые возвращаются, когда он пуст. Вы можете просто иметь пустой файл BreakingNews.html (если нет новостей), чтобы можно было проверить длину содержимого, а не существовать ли файл.

1 голос
/ 28 августа 2009

Отправьте запрос и получите ответ от сервера, используя AJAX, возможно, ответ JSON или XML, а затем используйте что-то похожее на следующее после обработки вашего ответа:

 breakingDiv = document.getElementById("breaking");
 breakingDiv.innerHTML = TheContentsFromTheServerResponse;
1 голос
/ 28 августа 2009

AJAX не может специально проверять наличие файлов на стороне сервера (потому что Javascript - это технология на стороне клиента), но вы могли бы написать свои обратные вызовы успеха и неудачи AJAX, чтобы они вели себя правильно, если он получает 404 для файла, который вы повторный запрос.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...