view mobile version net4me Enable JavaScript in your browser! Linux education center net4me.
 
net4me logo

tux

linux commands
shell script
protocol
ip, tcp, smtp, ntp, ftp
telnet terminal
java and javascript
ajax web technology
documentation
howto, man, info
cisco in network
linux server
linux in home
online utility
and more more more.
python development
туе4ьу дштгч

  Содержание подраздела:

Ajax, PHP, XML. генерация XML при помощи PHP. Объяснение

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

Что такое ajax я не стану объяснять в этой статье.
Про XMLHttpRequest-ы вы и так найдете кучу материалов даже на net4me.
На этот раз давайте сосредоточимся на серверной части сцепки ajax с php.

Итак, что же делает php скрипт на стороне сервера в ajax-php приложении?
А ничего он не делает!
Если грубо и "в двух словах" - он получает запрос и выдает
в ответ результаты в виде сгенерированного XML файла, либо в виде JSON объекта.

То есть, если у нас будет XMLHttpRequest'ом дергаться обычный текстовый файл
с XML синтаксисом и расширением .xml, то всё уже будет работать.

Но для наглядности примера нам надо сделать так, чтобы при каждом запросе
XML файл изменял своё содержимое, дабы определить что наш XMLHttpRequest
действительно работает...

На чём писать этот "динамическй XML файл" меняющий содержимое в зависимости от параметров запроса?
Да на всём что попалось под руку! Хоть на PHP, хоть на Perl, Pithon или Java...
Да хоть на баше в виде демона слушающего какой-то порт или Си!
На чём писать - нам абсолютно без разницы - Главное, чтобы файл менял своё содержимое каждый раз при запросе.
Но раз уж мы начали разговор о PHP, то напишем его на PHP...

Давайте в качестве элементарного примера рассмотрим простейший вариант:

Задача: Сделать динамически изменяющийся ( в зависимости от параметров запроса ) XML файл при помощи PHP.

<?php
$param1 = isset($_GET['p1'])?(int)$_GET['p1']:1;	// Get input p1
$param2 = isset($_GET['p2'])?(int)$_GET['p2']:2;	// Get input p2
$res1 = $param1 + $param2;				//summ
$res2 = $param2 - $param1;
$text="<ajax-response>

<response>
<result>
<vars>
<incoming>".$param1."</incoming>
<outgoing>".$res1."</outgoing>
</vars>
<vars>
<incoming>".$param2."</incoming>
<outgoing>".$res2."</outgoing>
</vars>
</result>
</response>
</ajax-response>";
// Output:
header("Content-Type: text/xml");
print('<?xml version="1.0" encoding="utf-8" standalone="yes"?>');
print($text);
?>

Расшифровываем:
1. Переменной $param1 присваеваем значение p1 из параметра запроса
(ну там http://net4me.net/docs/ajax/xml_gen_php.php?p1=6&p2=10 вот этот самый p1 мы и берем.)
2. В целях безопасности проверяем полученый p1 на соответствие
числу (а мы передаём только числа!) И если этот p1 не число, или что-то
не нужное нам, или его просто нет - делаем p1 равным 1.
3. А дальше составляем наш текстовый файл с XML синтаксисом.
4. И на последок, перед выводом содержимого приклеиваем заголовок о том,
что это XML файл.
Всё.
Серверная сторона элементарного примера готова!

А теперь скажите, на каком языке программирования мы бы не смогли сделать то же самое?
Так что на чём писать - точно без разницы. =)

Увидеть работающий результат нашего php скрипта, генерирующего XML файл для проверки ajax приложенй можно здесь.
Вызывая этот скрипт с разлицными значениями параметров p1 и p2 мы будем получать различное содержимое XML файла.
Что нам и надо было для наших тестов.

В следующей статье на net4me.net мы продолжим наше ajax - php приложение
и напишем клиентскую часть на javascript, которая будет запрашивать этот
XML файл и получать из него данные.

А пока можно посмотреть клиентскую часть аналогичного примера ajax приложения на php использующего XML файл.

P.S. Это элементарный пример. На самом деле ajax'ом очень удобно передавать клиенту информацию
из баз данных, фотографии, и т.д. без рэфреша страниц.
Ну вот представьте себе большой портал. Сервера перегружены. Обращений масса...
А поменять по клику нужно одну лишь фотографию.
Ну и зачем мне каждый раз обновлять всё, что есть на странице, нагружая сервер, когда я могу заменить только одну фотографию при помощи ajax? Удобно.

Автор этой статьи: Ben-Ja. Написано для net4me.

ajax technology examples
home back top
При копировании материалов нашего портала, сылка на net4me обязательна.
Рейтинг@Mail.ru   Valid HTML 4.01 Transitional     Яндекс цитирования   best billing

 



...

net4me snowflake
rfc2368
 
net4me portal This page last modified: Saturday, October 1, 2011   be in net. net4me

portal net4me linux education center