Сценарии PHP AJAX для получения переменной PHP - PullRequest
0 голосов
/ 06 апреля 2011

Я новичок в использовании ajax, но некоторое время использовал PHP.Мне любопытно, как их объединить.

У меня на сайте есть скрипт PHP, который требует много времени, потому что он выполняет несколько итераций и множество функций.

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

Возможно ли это, если да, то как?

Помощь очень ценится.

Ответы [ 3 ]

1 голос
/ 06 апреля 2011

Вы можете сохранить текущее состояние индикатора хода выполнения в файле, кэше оперативной памяти или базе данных и написать другой скрипт, который просто возвращает это состояние. Затем вы реализуете AJAX, который получает эту информацию, а затем запускаете новый запрос AJAX и так далее, пока процесс не будет завершен. Я бы предложил что-то вроде «долгоживущего HTTP-соединения» с использованием AJAX. Передайте состояние в вашем ajax-запросе, и если прогресс не изменился в PHP, просто спите, пока он не изменится.

Как это (состояние в%):

AJAX request: progress.php?state=0
AJAX response: state: 10
AJAX request: progress.php?state=10
-- on server side it is still 10%, so sleep the php progress until it changes and then reply
AJAX response: state: 11
....

А поскольку для ajax-запроса истекло время ожидания, просто запустите новый запрос, как только истечет время ожидания запроса.

Я надеюсь, это то, что вы имели в виду.

0 голосов
/ 06 апреля 2011

Возможно, в вашем серверном скрипте, который загружается некоторое время, создайте «отчетную переменную», которая увеличивается с шагом измерения.Создайте независимый метод обратного вызова AJAX на стороне сервера, чтобы посмотреть переменную отчета и просто повторить это число.Когда он получен на стороне клиента, он обновляет эту часть DOM и viola`, без проблем и суеты.

0 голосов
/ 06 апреля 2011

jQuery.ajax () делает то, что вы хотите:

Отправка данных в скрипт PHP с последующим получением результата:

$.ajax({
  url: "progress.php",
  success: function(response){
    $("#results").html(response);
  }
});

В пользовательском интерфейсе jQuery даже есть виджет Progressbar , было бы мудрым решением объединить оба.

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