AJAX можно использовать для динамического взаимодействия с базой данных.
В следующем примере показано, как веб-страница считывает информацию из базы данных через AJAX: Выберите клиента в раскрывающемся списке ниже:
Когда пользователь выбирает клиента в раскрывающемся списке выше, выполняется функция с именем «showCustomer()». Эта функция запускается событием «onchange»:
функция showCustomer ( ул ) { вар xmlhttp ; если ( ул == " " ) { document.getElementById ( " txtHint " ) . innerHTML = " " ; return ; если ( окно . XMLHttpRequest ) { // IE7+, Firefox, Chrome, Opera, код выполнения браузера Safari xmlhttp = новый XMLHttpRequest ( ) } ; еще { // код выполнения браузера IE6, IE5 xmlhttp = новый ActiveXObject ( " Microsoft.XMLHTTP " ) ; xmlhttp.onreadystatechange = функция ( ) { если ( xmlhttp .readyState == 4 && xmlhttp .status == 200 ) { document.getElementById ( " txtHint " ) . } xmlhttp.open ( " GET " , " / try /ajax/getcustomer.php? q = " + str , true ) ; xmlhttp send ( ) ;Функция showCustomer() выполняет следующие задачи:
Проверьте, выбран ли клиент
Создать объект XMLHttpRequest.
Выполнить созданную функцию, когда ответ сервера будет готов
Отправьте запрос в файл на сервере
Обратите внимание, что мы добавили в URL-адрес параметр q (с содержимым поля ввода)
Страница сервера, вызываемая приведенным выше JavaScript, представляет собой файл PHP с именем «getcustomer.php».
Также легко писать серверные файлы на PHP или других серверных языках. См. соответствующий пример, написанный на PHP.
Исходный код в «getcustomer.php» отвечает за запрос к базе данных и возврат результатов в таблице HTML:
<%response.expires=-1sql="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,connresponse.write("<table>")do до rs.EOF для каждого x в rs.Fields response.write("<tr><td><b>" & x.name & "</b></td>") response.write("<td>" & x. value & "</td></tr>") next rs.MoveNextloopresponse.write("</table>")%>