AJAX Пример работы с базой данных


AJAX можно использовать для динамического взаимодействия с базой данных.


Пример AJAX с базой данных

В приведенном ниже примере показано, как веб-страница может считывать информацию из базы данных с помощью AJAX: Пожалуйста, выберите клиента в раскрывающемся списке ниже:

Пример


Информация о клиенте будет отображаться здесь...

Попробуйте сами »


Пояснение к примеру - Функция showCustomer()

Когда пользователь выбирает клиента в раскрывающемся списке выше, выполняется функция с именем "showCustomer()". Эта функция запускается событием "onchange":

function showCustomer(str) { var xmlhttp; if (str == "") { document.getElementById("txtHint").innerHTML = ""; return } if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest() } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("txtHint").innerHTML = xmlhttp.responseText } } xmlhttp.open("GET", "/try/ajax/getcustomer.php?q=" + str, true); xmlhttp.send() }

Функция showCustomer() выполняет следующие задачи:

  • Проверить, выбран ли клиент
  • Создать объект XMLHttpRequest
  • Выполните созданную функцию, когда ответ сервера будет готов
  • Отправить запрос к файлу на сервере
  • Обратите внимание, что мы добавили параметр q (с содержимым поля ввода) в URL

Страница сервера AJAX

Страница сервера, вызываемая из приведённого выше JavaScript, — это PHP-файл с именем "getcustomer.php".

Также легко написать серверный файл на PHP или на других серверных языках. СмотритеСоответствующий пример, написанный на PHP。

Исходный код в "getcustomer.php" отвечает за запрос к базе данных, а затем возвращает результаты в HTML-таблице:

<%
response.expires=-1
sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="
sql=sql & "'" & request.querystring("q") & "'"

set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/db/northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
rs.Open sql,conn

response.write("<table>")
do until rs.EOF
  for each x in rs.Fields
    response.write("<tr><td><b>" & x.name & "</b></td>")
    response.write("<td>" & x.value & "</td></tr>")
  next
  rs.MoveNext
loop
response.write("</table>")
%>
Другие расширения