2011-01-30 2 views
1

Как использовать функцию $ .ajax() для отображения вывода в реальном времени. Сейчас я использую его в этом контексте:Как использовать функцию ajax jQuery?

$.ajax({ 
    type: 'get', 
    url: 'process.php', 
    data: 'foo=boo', 
    success: function(output) { 
     $('div#results').html(output); 
    } 
}); 

Вышеизложенные отображает выход RECIVED из сценария PHP только ПОСЛЕ сценарий полностью выполнен. Так, если в сценарии PHP вы были следующие:

echo 'Hello for the first time'; 
// some code 
echo 'Hello again'; 
// some code 
echo 'Are you still here?'; 

Выход будет все эти отголоски все в одном. Вместо этого, есть ли способ, который я могу обновить вывод, полученный от PHP-скрипта один за другим как, запросы выполняются PHP в режиме реального времени?

Я знаю, как обновлять вещи в режиме реального времени, когда вы работаете полностью в области JavaScript, например: проверяете, не набирается ли введенный ввод длиной не менее 10 символов, используя событие keyup() в качестве триггера для проверки после каждого введите ключ и отобразите сообщение, чтобы ввести что-то большее, которое исчезает, как только набирается 10-й символ.

Но как это сделать, когда вывод поступает из файла PHP? это даже возможно?

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

+0

реального времени = асинхронность –

+0

есть чтение этого: http://stackoverflow.com/questions/136012/comet-and-jquery – ifaour

+0

Кроме того, это 'Вместо ключа» Foo = bar' ;-) – ifaour

ответ

1

Невозможно. Вы должны разделить эту задачу на части - одна задача - длительная работа, которая обновляет ее статус в базе данных и другую задачу, которая просто извлекает статус из базы данных и отображает прогресс для пользователей.

+0

Это звучит неплохо, имея статус обновления обновления скрипта PHP в базе данных после выполнения задачи перед переходом к следующему. В этом конкретном проекте я не могу использовать соответствующую базу данных, но могу использовать плоский файл. Вы знаете, как я могу использовать JavaScript для мониторинга файла для изменений, таким образом, при каждом изменении PHP я могу выполнить команду ajax, чтобы перезагрузить содержимое этого плоского файла и обновить статус на основе его содержимого. Как контролировать плоский файл для изменений? – Sammy

+0

Если вы используете простые файлы, вы столкнетесь с проблемой масштабирования, но для небольшого проекта это будет хорошо. Я не эксперт по php, но думаю, вы могли бы просто перечитать файл. Вместо плоского файла вы можете использовать базу данных sqlite, но это не многопоточность, поэтому будьте осторожны. – gor

+0

Это очень маленький проект, поэтому проблем с масштабируемостью нет. Я действительно спрашивал, что я могу использовать в качестве триггера в JAVASCRIPT, чтобы следить за содержимым плоского файла. В примере, который я дал в исходном вопросе, я использовал «keyup» для проверки значения поля ввода. Но в этой ситуации пользователь установит скрипт PHP в движение и ничего не сделает. Поэтому я не могу придумать, что я могу использовать в качестве триггера, чтобы JavaScript продолжал проверять плоский файл на предмет изменений. – Sammy

0

Umm, nope. Это невозможно. Лучшее, что вы можете сделать, это попытаться разбить ваш php-файл и вызвать несколько ajax-запросов для каждого из этих файлов. !