У меня есть еще один вопрос. XMLhttpRequests преследуют меня. Теперь все в базе данных, но мне нужны эти данные для обновления моей страницы при загрузке или перезагрузке страницы. XHR запускается в файле JavaScript, который запускает PHP-Script. PHP-Script доступ к базе данных MySQL. Но как получить возвращенные записи обратно в мой JavaScript для обновления страницы. Я не могу разобраться.
Сначала мой синхронный XMLhttpRequest:
function retrieveRowsDB() { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","retrieveRowData.php", false); xmlhttp.send(null); return xmlhttp.responseText; }
Тогда мой PHP-Script:
<?php $con = mysql_connect("localhost","root","*************"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("sadb", $con); $data="SELECT * FROM users ORDER BY rowdata ASC"; if (!mysql_query($data,$con)) { die('Error: ' . mysql_error()); } else { $dbrecords = mysql_query($data,$con); } $rowdata = mysql_fetch_array($dbrecords); return $rowdata; mysql_close($con); ?>
Что мне здесь не хватает? Кто-нибудь понял?
До сих пор с вашим кодом не так много технически неправильно – вам просто нужно что- то с этим делать .
В вашем PHP-файле вместо return $rowdata;
, вам нужно вывести его каким-то образом. В настоящее время он просто отправляет пустой документ обратно в javascript, поэтому вам нужно будет отбросить код. Как правило, при использовании нескольких объектов, подлежащих возврату в javascript, JSON является хорошим форматом. Проверьте json_encode
.
С другой стороны, в js, вам нужно будет принять ответ и обновить страницу в некотором роде. В настоящее время вы просто возвращаете его снова.
Я предлагаю вам пройти несколько учебных пособий по ajax и подумать о том, чтобы использовать фреймворк, такой как jQuery, для тяжелого подъема для вас. Возможно, вам также захочется немного почитать эту тему, поскольку у вас есть некоторые фундаментальные заблуждения.
PHP-скрипты не return
к JavaScript. Вы должны echo
-данные (закодированные каким-то образом, например json_encode ).
Действительно, если вы делаете какой-либо ajax, вы значительно облегчите свою жизнь, используя библиотеку ajax .
Проблема заключается в xmlhttp.responseText
, она не существует в то время, попробуйте добавить это непосредственно перед оператором return:
xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState === 4 && xmlhttp.status === 200) { doSomething(xmlhttp.responseText); } } }
В основном вам нужно подождать, пока данные будут доступны, требуется время для запроса HTTP и получения ответа.