Я начал изучать Ajax, и я сделал эту простую HTML-страницу, которая отображает ввод пользователя, когда он набирает имя книги (хранится в массиве в php-файле), используя ajax, пользователь может видеть ниже входных результатов, пока он типы, это та часть, которую я не мог сделать, Вот код:
<!DOCTYPE html> <html> <head> <script type="text/javascript" src="bookstore.js"></script> <link rel="stylesheet" href="style.css"> </head> <body onload="process()"> <h1> Hadhemi's BookStore ! </h1> Enter the book you want to order <input type="text" id="userInput"> <div id="underInput"> </div> </body> </html>
И это JS-файл
// 3 functions : create an object, communicate and response var xmlHttp=createXmlHttpRequestObject(); function createXmlHttpRequestObject() { var xmlHttp; if(window.ActiveXObject) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //check for IE } catch (e) { xmlHttp = false; } } else { try { xmlHttp = new XMLHttpRequest(); // ! IE } catch (e) { xmlHttp = false; } } if (!xmlHttp) alert("Can't Create that object"); else return xmlHttp; } function process() { if(xmlHttp.readyState==0 || xmlHttp.readyState==4) { book = encodeURIComponent(document.getElementById("userInput").value); xmlHttp.open("GET","book.php?book=" + book,true); xmlHttp.onreadystatechange = handleServerResponse; xmlHttp.send(null); } else { setTimeout('process()',1000); } } function handleServerResponse() { //sends back an xml file if (xmlHttp.readyState==4) { if(xmlHttp.status==200) { xmlResponse = xmlHttp.responseXML; xmlDocumentElement=xmlResponse.documentElement; message = xmlDocumentElement.firstChild.data; document.getElementById("underInput").innerHTML= message; setTimeout('process()',1000); } else { alert("OOps! Something went wrong!"); } } }
И это файл PHP:
<?php header('Content-Type: text/xml'); echo '<?xml version="1.0" enconding="UTF-8" standalone="yes" ?>'; echo'<response>'; $book = $_GET['book']; $bookArray = array('Book1','Book2','Book3'); if(in_array($book, $bookArray)) echo 'We do have'.$book.'!'; elseif ($book='') echo 'Enter a book name idiot!'; else echo 'We dont have'.$book.'!'; echo'</response>'; ?>
Я не могу показать, что должен делать JS-файл, кто-нибудь знает, как его исправить?
EDIT: я поместил все файлы в папку www под Wamp.
В том, что вы опубликовали, есть несколько ошибок.
Во-первых, у вас есть опечатка в:
echo '<?xml version="1.0" enconding="UTF-8" standalone="yes" ?>'; ^ the "n"
Который должен читать как encoding
.
Наличие ошибок, которые будут отображаться на вашем сервере, вызвало бы следующее:
Ошибка анализа XML: объявление XML не является корректным. Место: http://www.example.com/book.php?book.php?book= Номер строки 1, столбец 21:
Плюс, имейте в виду, что, и, как я сказал в комментариях, что Book1
и Book1
не обрабатываются одинаково, поэтому ключи массива считаются чувствительными к регистру.
Проконсультируйтесь со следующим ответом на Stack:
Вы также выполняете задание при использовании одного знака равенства:
elseif ($book='') ^
а не сравнение, которое должно содержать дополнительный знак равенства:
elseif ($book=='') ^^
Рекомендации:
Кроме того, убедитесь, что PHP действительно установлен, работает и правильно настроен.