Для выполнения запросов к серверу приложение AjaxMail испс как объект XMLHttp, так и скрытый плавающий фрейм. Обр к сценарию AjaxMailNavigate. php производятся изнутри скрытого! ма, поэтому сценарий должен содержать корректный код HTMLi vaScript. Этот сценарий получает точно такую же строку запр и Aj axMailAction. php, поскольку для выполнения действий ему i дима та же самая информация.
В первой части данного сценария находится программный код, i рый выполняет запрошенное действие:
:|j*<?php3:'^§:^
require_once("inc/config.inc.php");
require_once("inc/pop311b/pop3.class.php"); require_once("inc/pop31ib/pop3message.class.php"); require_once("inc/pop31ib/pop3header.class.php");
require_once("inc/pop31ib/pop3attachment.class.php"); require_once("inc/AjaxMail.inc.php"); require_once("inc/JSON.php"); ... 1У
header("Cache-control: No-Cache"); header("Pragma: No-Cache");
Sfolder = $_GET["folder"]; ;
$page = (int) $_GET["page"]; Sid = "";
if (isset($_GET["id"])) { Sid = (int) $ GET["id"];
}
Saction = $_GET["action"]; • -
Smailbox = new AjaxMailboxO; SoJSON = new JS0N();
Soutput = ""; .
switch(Saction) {
case "getfolder": /
Sinfo = Smailbox->getFolderPage($folder, Spage); Soutput = SoJSON->encode($info); break; case "getmessage":
Smessage = $mailbox->getMessage($id); if ($message->unread) {
$mailbox->markMessageAsRead(Sid);
Soutput = $oJSON->encode($message);
break;
default:
Soutput = "null";
?>
Для работы этого сценария требуется, чтобы были подключены те же самые файлы, что и в AjaxMailAction. php, но, в отличие от последнего, он задает единственный заголовок - No-Cache, поскольку результатом работы сценария является код HTML (а не plain/text). Далее из строки запроса извлекаются входные параметры и помещаются в перемен¬ные. Затем создаются экземпляры классов AjaxMailbox и JSON.
Как и в сценарии AjaxMailAction.php, переменная Saction передается оператору switch, который на основе ее значения выбирает выполняе¬мое действие. Для выполнения операции getf older вызывается метод getFolderPageO, который извлекает информацию о заданной странице в папке. Результат работы метода преобразуется в формат JSON и со¬храняется в переменной Soutput.
Если была запрошена операция getmessage, вызывается метод getMes-sage(). Если сообщение не было прочитано ранее, оно помечается как прочитанное. После этого сообщение преобразуется в формат JSON
и сохраняется в переменной $output. Если было запрошено какое-; иное действие, в переменную $output записывается значение null.
Остальная часть сценария содержит код HTML:
AjaxMail - просмотр почтового ящика
//;
<?php
switch(Saction) { case "getfolder":
echo "parent.oMailbox.displayFolder(oInfo);";
break; case "getmessage":
echo "parent.oMailbox.displayMessage(oInfo);";
break; case "compose":
echo "parent.oMailbox.displayComposeO;";
break; case "reply":
echo "parent.oMailbox.displayReply();";
break; case "replyall":
echo "parent.oMailbox.displayReplyAHO;";
break;- .
case "forward":
echo "parent.oMailbox.displayForwardO;";
break;
В этой части сценария содержимое переменной $output пе в переменную JavaScript olnfo. Поскольку переменная $output жит либо пустую ссылку, либо строку в формате JSON, такое п ние вполне допустимо. Значение в переменную записывается обработчика события window, onload. Затем, уже после загрузки цы, в зависимости от содержимого переменной $action вызыва или иной метод JavaScript