Пример responseXML с PHP и AJAX
- Предыдущая страница AJAX Database
- Следующая страница AJAX Live Search
AJAX можно использовать для получения информации из базы данных в формате XML.
Пример AJAX Database в XML (тестовое описание: функция не реализована)
В следующем примере AJAX мы покажем, как веб-страница читает информацию из MySQL-базы данных, преобразует данные в XML-документ и использует этот документ для отображения информации в различных местах.
Этот пример очень похож на пример "PHP AJAX Database", приведенный в предыдущем разделе, но есть одно большое различие: в этом примере мы получаем данные в формате XML, используя функцию responseXML на PHP-странице.
Получение XML-документа в ответ позволяет нам обновлять несколько мест на странице, а не просто отображать PHP-вывод.
В этом примере мы будем использовать информацию, полученную из базы данных, чтобы обновить несколько элементов <span>.
Выберите имя из выпадающего списка
Эта колонка состоит из четырех элементов:
- MySQL база данных
- Простая HTML-форма
- JavaScript
- PHP page
База данных
База данных, которую мы будем использовать в этом примере, выглядит примерно так:
id | FirstName | LastName | Age | Hometown | Job |
---|---|---|---|---|---|
1 | Peter | Griffin | 41 | Quahog | Brewery |
2 | Lois | Griffin | 40 | Newport | Piano Teacher |
3 | Joseph | Swanson | 39 | Quahog | Police Officer |
4 | Glenn | Quagmire | 41 | Quahog | Pilot |
HTML-форма
Пример, приведенный выше, включает простую HTML-форму и ссылку на JavaScript:
<html> <head> <script src="responsexml.js"></script> </head> <body> <form> Выберите пользователя: <select name="users" onchange="showUser(this.value)"> <option value="1">Peter Griffin</option> <option value="2">Lois Griffin</option> <option value="3">Glenn Quagmire</option> <option value="4">Joseph Swanson</option> </select> </form> <h2> <span id="firstname"></span> <span id="lastname"></span> </h2> <span id="job"></span> <div style="text-align: right"> <span id="age_text"></span> <span id="age"></span> <span id="hometown_text"></span> <span id="hometown"></span> </div> </body> </html>
Пример объяснения - HTML-форма
- HTML-форма представляет собой выпадающий список, значение атрибута name которого равно "users", а значения вариантов соответствуют полю id в базе данных
- Под формой есть несколько элементов <span>, которые служат占ачками для различных значений, которые мы получаем
- Когда пользователь выбирает конкретный вариант, выполняется функция "showUser()". Выполнение функции инициируется событием "onchange"
Иначе говоря, каждый раз, когда пользователь изменяет значение в выпадающем списке, функция showUser() выполняется и результат выводится в указанном элементе <span>.
JavaScript
Это JavaScript-код, хранящийся в файле "responsexml.js":
var xmlHttp функция showUser(str) { xmlHttp = GetXmlHttpObject() if (xmlHttp==null) { alert("Browser does not support HTTP Request"); return; } var url="responsexml.php" url=url+"?q="+str; url=url+"&sid="+Math.random(); xmlHttp.onreadystatechange=stateChanged; xmlHttp.open("GET",url,true); xmlHttp.send(null); } function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { xmlDoc=xmlHttp.responseXML; document.getElementById("firstname").innerHTML= xmlDoc.getElementsByTagName("firstname")[0].childNodes[0].nodeValue; document.getElementById("lastname").innerHTML= xmlDoc.getElementsByTagName("lastname")[0].childNodes[0].nodeValue; document.getElementById("job").innerHTML= xmlDoc.getElementsByTagName("job")[0].childNodes[0].nodeValue; document.getElementById("age_text").innerHTML="Age: "; document.getElementById("age").innerHTML= xmlDoc.getElementsByTagName("age")[0].childNodes[0].nodeValue; document.getElementById("hometown_text").innerHTML="<br/>From: "; document.getElementById("hometown").innerHTML= xmlDoc.getElementsByTagName("hometown")[0].childNodes[0].nodeValue; } } function GetXmlHttpObject() { var objXMLHttp=null if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") } return objXMLHttp }
Пример объяснения:
showUser() and GetXmlHttpObject functions with Пример базы данных MySQL с PHP и AJAX The examples in this section are the same. You can refer to the relevant explanations in them.
stateChanged() function
If an item in the dropdown list is selected, this function is executed:
- Using the responseXML function, define the "xmlDoc" variable as an XML document
- Retrieve data from this XML document and place them in the correct "span" elements
PHP page
This server page, called "responsexml.php", is a simple PHP file that is called by JavaScript.
This page is written in PHP and uses the MySQL database.
The code will run a SQL query against the database and return the results as an XML document:
<?php header('Content-Type: text/xml'); header("Cache-Control: no-cache, must-revalidate"); //A date in the past header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); $q=$_GET["q"]; $con = mysql_connect('localhost', 'peter', 'abc123'); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("ajax_demo", $con); $sql="SELECT * FROM user WHERE id = ".$q.""; $result = mysql_query($sql); echo '<?xml version="1.0" encoding="ISO-8859-1"?> <person>'; while($row = mysql_fetch_array($result)) { echo "<firstname>" . $row['FirstName'] . "</firstname>"; echo "<lastname>" . $row['LastName'] . "</lastname>"; echo "<age>" . $row['Age'] . "</age>"; echo "<hometown>" . $row['Hometown'] . "</hometown>"; echo "<job>" . $row['Job'] . "</job>"; } echo "</person>"; mysql_close($con); ?>
Пример объяснения:
Происходит: когда запрос送达 PHP-страницу из JavaScript:
- content-type PHP-документа установлен в "text/xml"
- PHP-документ установлен в "no-cache", чтобы предотвратить кэширование
- Установите переменную $q с данными, отправленными HTML-страницей
- PHP открывает соединение с сервером MySQL
- Найден "user" с указанным id
- Вывод данных в виде XML-документа
- Предыдущая страница AJAX Database
- Следующая страница AJAX Live Search