Запрос XMLHttpRequest> PHP> Запрос XMLHttpRequest
У меня есть еще один вопрос. XMLHttpRequests преследуют меня. Теперь все есть в базе данных, но мне нужны эти данные, чтобы обновить мою страницу при загрузке или перезагрузке первой страницы. XHR запускается в файле JavaScript, который запускает PHP-скрипт. PHP-Скрипт доступа к базе данных 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-скрипт:
<?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);
?>
Чего мне здесь не хватает? У кого-нибудь есть зацепка?
3 answers
Пока в вашем коде не так много технически неправильных - вам просто нужно на самом деле что-то с ним сделать .
В вашем PHP-файле вместо return $rowdata;
вам нужно каким-то образом вывести его. В настоящее время он просто отправляет пустой документ обратно в javascript, поэтому вам нужно будет echo
вывести код. Обычно при использовании нескольких объектов, возвращаемых в javascript, JSON является хорошим форматом. Проверьте json_encode
.
С другой стороны, в в js вам нужно будет принять ответ и каким-то образом обновить страницу. В настоящее время вы просто возвращаете его снова.
Я предлагаю вам пройти несколько учебных пособий по ajax и рассмотреть возможность использования такой структуры, как jQuery, чтобы выполнить тяжелую работу за вас. Возможно, вы также захотите немного почитать на эту тему, так как у вас есть некоторые фундаментальные заблуждения.
PHP-скрипты не return
на JavaScript. Вы должны echo
данные (закодированные каким-либо образом, напримерjson_encode).
Действительно, если вы занимаетесь каким-либо видом ajax, вы сделаете свою жизнь намного проще, используя библиотеку ajax .
Проблема в xmlhttp.responseText
, в то время ее не существовало, попробуйте добавить это непосредственно перед вашим оператором возврата:
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
doSomething(xmlhttp.responseText);
}
}
}
В основном вам нужно подождать, пока данные будут доступны, требуется время, чтобы сделать HTTP-запрос и получить ответ.