- 15, May 2024
- #1
Всем привет,
Я пытаюсь изучить PHP/AJAX/Javascript, чтобы создать собственную веб-страницу.
Я создал БД и PHP-скрипт, который извлекает из нее данные.
Я настроил его на получение запроса, и он правильно возвращает данные.
Кажется, у меня даже настроен javascript для создания объекта XMLHTTPRequest, и он возвращает данные из PHP так, как должно. Но как только это произойдет, страница обновится и вернется к исходной загруженной странице. Я понятия не имею, почему он это делает.
Пожалуйста помоги! Вы можете увидеть страницу и то, что она делает (нажимайте кнопки меню, чтобы увидеть ее) по адресу ne.fario.us/jonelle/main2.php. HTML
Даже несмотря на все эти изменения, PHP по-прежнему возвращает данные, а страница впоследствии перезаписывает их. Заранее благодарим за то, что уделили время на это, и особенно, если вы можете помочь это исправить.
Кажется, у меня даже настроен javascript для создания объекта XMLHTTPRequest, и он возвращает данные из PHP так, как должно. Но как только это произойдет, страница обновится и вернется к исходной загруженной странице. Я понятия не имею, почему он это делает.
Пожалуйста помоги! Вы можете увидеть страницу и то, что она делает (нажимайте кнопки меню, чтобы увидеть ее) по адресу ne.fario.us/jonelle/main2.php. HTML
<?php
$categoryID = "\"" . $_GET['categoryID'] . "\"";
include 'dblogin.php';
$sql = "SELECT Authors.AuthorName, Articles.PostingDate, Categories.CategoryName, Articles.Title, Articles.Content, Articles.upVotes, Articles.downVotes
FROM Articles
INNER JOIN Authors on Articles.AuthorID = Authors.AuthorID
INNER JOIN Categories on Articles.CategoryID = Categories.CategoryID
WHERE Categories.CategoryID = $categoryID
ORDER BY Articles.ArticleID DESC;";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
// output data of each row
while($row = $result->fetch_assoc())
{
$score = $row[upVotes] - $row[downVotes];
echo
"<article><div class='article_header'>". $row["Title"].
"</div><div class='article_datetime'>by: " . $row["AuthorName"].
" on: " . $row["PostingDate"].
" in: " . $row["CategoryName"].
"</div><div class='article_content'>" . $row["Content"].
"</div><div class='article_footer'>Vote: +1 / -1 score: " . $score. "</div></article>";
}
}
else
{
$sql = "SELECT Categories.CategoryName
FROM Categories
WHERE CategoryID = $categoryID;";
$result =$conn->query($sql);
if($result->num_rows > 0)
{
while ($row = $result->fetch_assoc())
{
echo "0 results in the " . $row["CategoryName"] . " category.";
}
}
}
$conn->close();
?>
Код (разметка): Javascript
<script language = "javascript" type = "text/javascript"> <!-- function fetchArticles(categoryID) { var ajaxRequest; try { // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); }catch (e) { // Internet Explorer Browsers try { ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); }catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); }catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } ajaxRequest.onreadystatechange = function() { if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { var ajaxDisplay = document.getElementById('page_content'); ajaxDisplay.innerHTML = ajaxRequest.responseText; } } var queryString = "?categoryID=" + categoryID; ajaxRequest.open("GET", "[URL='https://lumtu.com/yti/aw55waHBodHRwOi8vbmUuZmFyaW8udXMvam9uZWxsZS9kYi9mZXRjaEFydGljbGVzMizVG']http://ne.fario.us/jonelle/db/fetchArticles2.php[/URL]" + queryString, true ); ajaxRequest.send(null); } //--> </script>
Код (JavaScript):
PHP
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="./css/nef_main.css"> <script src="./js/getWindowSize.js"></script> <script src="./js/fetchArticles.js"></script> <script language = "javascript" type = "text/javascript"> <!-- function fetchArticles(categoryID) { var ajaxRequest; try { // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); }catch (e) { // Internet Explorer Browsers try { ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); }catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); }catch (e){ // Something went wrong alert("Your browser broke!"); return false; } } } ajaxRequest.onreadystatechange = function() { if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { var ajaxDisplay = document.getElementById('page_content'); ajaxDisplay.innerHTML = ajaxRequest.responseText; } } var queryString = "?categoryID=" + categoryID; ajaxRequest.open("GET", "[URL='https://lumtu.com/yti/aw55waHBodHRwOi8vbmUuZmFyaW8udXMvam9uZWxsZS9kYi9mZXRjaEFydGljbGVzMizVG']http://ne.fario.us/jonelle/db/fetchArticles2.php[/URL]" + queryString, true ); ajaxRequest.send(null); } //--> </script> <!--[if lt IE 9]> <script src="[URL='https://lumtu.com/yti/a4SS4anNodHRwOi8vaHRtbDVzaGl2Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sN1Gd']http://html5shiv.googlecode.com/svn/trunk/html5.js[/URL]"></script> <![endif]--> <title>Nefarious Games</title> </head> <body id="body" onLoad="getWindowSize(); fetchArticles(0);"> <div id="clouds">.</div> <header id="header"> <div id="wrap"> <div class="cut1"></div> <div class="cut2"></div> <div id="content"> <div id="logo1"></div> <div id="logo2"></div> </div> </div> </header> <nav id="nav"> <div id="menu_buttons"> <ul id="navigation"> <a href="" onClick="fetchArticles(1)"><li class="button_nav">bio</li></a> <a href="" onClick="fetchArticles(2)"><li class="button_nav">resume</li></a> <a href="" onClick="fetchArticles(3)"><li class="button_nav">game design</li></a> <a href="" onClick="fetchArticles(4)"><li class="button_nav">coding</li></a> <a href="" onClick="fetchArticles(5)"><li class="button_nav">blog</li></a> </ul> </div> </nav> <section id="page_titles"> <div class="lightbar"> <hr id="lightbar"> </div> <div id="pagetitle"> Biography </div> <div id="nef_games"> <a href="" onClick="fetchArticles(2)">Nefarious Designs</a> </div> </section> <section id="articles"> <div id="page_content"> </div> <div class="lightbar"> <hr id="lightbar"> </div> </section> <footer id="footer"> <ul id="information_panel"> <li id="social_media"> <ul id="social_media_buttons"> <li class="button_sm"><a href="[URL='https://lumtu.com/yti/bhhhhb3NodHRwOi8vdHdpdHRlci5jb20vYnJvdGhlcnlhG']http://www.twitter.com/brotherxaos[/URL]"><img id="button_twitter" src="./images/icons/button_twitter_normal2.jpg" alt="Братхаос в Твиттере"></a></li> <li class="button_sm"><a href="[URL='https://lumtu.com/yti/bQYYQb3NodHRwOi8vZmFjZWJvb2suY29tL2Jyb3RoZXJ4XZo']http://www.FB.com/brotherxaos[/URL]"><img id="button_FB" src="./images/icons/button_FB_normal2.jpg" alt="Братхаос на ФБ"></a></li> <li class="button_sm"><a href="[URL='https://lumtu.com/yti/YzllzY2FodHRwczovL2xpbmtlZGluLmNvbS9pbi9yd2RhdmhR2']https://www.linkedin.com/in/rwdavisca[/URL]"><img id="button_linkedin" src="./images/icons/button_linkedin_normal2.jpg" alt="Братхаос в LinkedIn"></a></li> <li class="button_sm"><a href="[URL='https://lumtu.com/yti/bQYYQb3NodHRwOi8vcGludHJlc3QuY29tL2Jyb3RoZXJ4XZo']http://www.pintrest.com/brotherxaos[/URL]"><img id="button_pintrest" src="./images/icons/button_pintrest_normal2.jpg" alt="Братхаос на Pintrest"></a></li> <li class="button_sm"><a href="[URL='https://lumtu.com/yti/dz99zdHNodHRwczovL3BsdXMuZ29vZ2xlLmNvbS8xMDgyNTAxMTM5MjU2NDU2NDA4NTkvcGvkT']https://plus.google.com/108250113925645640859/posts[/URL]"><img id="button_google+" src="./images/icons/button_googleplus_normal2.jpg" alt="Братхаос в Google+"></a></li> <li class="button_sm"><a href=""><img id="button_gmail" src="./images/icons/button_gmail_normal.png" alt="Brotherxaos в Gmail"></a></li> </ul> </li> <li id="copyright"> <ul> <li class="text_c">ne.fario.us, Nefarious Designs; all rights reserved</li> <li class="text_c">© 2010 - 2016 Richard Davis</li> <li class="text_c"><a class="extLink" href="[URL='https://lumtu.com/yti/bvNNvbS9odHRwOi8vbWlzc2pvbmVydS5kZXZpYW50YXJ0Lm0JX']http://missjoneru.deviantart.com/[/URL]">Graphic Design by: Jonelle Prideaux</a></li> </ul> </li> </ul> </footer> </body> </html>
PHP: принятые меры по устранению неполадок
- Я могу напрямую посетить файл php и передать ему идентификатор категории, чтобы вернуть правильные значения. CategoryID 0 имеет некоторый Lorem Ipsum, все остальные номера 1–5 ничего не имеют, но возвращают оператор, указывающий на это.
- http://ne.fario.us/jonelle/db/fetchArticles2.php?categoryID=0
- http://ne.fario.us/jonelle/db/fetchArticles2.php?categoryID=1
- Я отключил оба оператора onLoad в своем HTML на случай, если они активируют еще одно обновление страницы.
- Я удалил обе ссылки на внешние файлы JavaScript в заголовке HTML.
- Погуглил, как бы вы это ни назвали, но результаты не помогли.
Даже несмотря на все эти изменения, PHP по-прежнему возвращает данные, а страница впоследствии перезаписывает их. Заранее благодарим за то, что уделили время на это, и особенно, если вы можете помочь это исправить.