Я создал очень простую страницу, которая извлекает все контакты из моей таблицы contact
MySQL, используя AJAX:
index.php
html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>mycontacts.</title>
<script type="text/javascript" src="JavaScripts/PrintContacts.js"></script>
</head>
<body>
<div class="main-wrapper">
<div id="main-content">
<script type="text/javascript">
printContacts();
</script>
<div id="contacts">
</div>
</div>
</div>
</body>
</html>
PrintContacts.js
var xmlHttp;
function printContacts() {
xmlHttp = new XMLHttpRequest();
var url = "PHP/getAllContacts.php";
// Workaround for page caching
url = url + "&sid=" + Math.round(Math.random() * 1000000000);
// Commenting the line above removes my issue but I do need this for caching!!!
// Manage XmlHttpObject state change
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open("POST", url, true);
xmlHttp.send(null);
}
function stateChanged() {
// Check if the XmlHttp request is complete
if (xmlHttp.readyState == 4) {
// Set the XmlHttp response in the div contacts
document.getElementById("contacts").innerHTML = xmlHttp.responseText;
}
}
getAllContacts.php
<?php
$dbconnection = mysql_connect("localhost", "root", "");
mysql_select_db("mycontacts", $dbconnection);
$command = "SELECT * FROM contact";
$result = mysql_query($command);
echo "<table border='1'>";
// Table headers
echo "<tr><th>Name</th></tr>";
// Print all contacts
while($row = mysql_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['DisplayName'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($dbconnection);
?>
Открытие getAllContacts.php напрямую возвращает соответствующую таблицу с данными, однако,Открытие index.php приводит к ошибке:
Объект не найден!
Запрошенный URL не найден на этом сервере.Ссылка на ссылающейся странице представляется неверной или устаревшей.Пожалуйста, сообщите автору этой страницы об ошибке.
Если вы считаете, что это ошибка сервера, пожалуйста, свяжитесь с веб-мастером .
Ошибка 404
localhost
12/08/2010 14:47:27
Apache / 2.2.14 (Win32) DAV / 2 mod_ssl / 2.2.14 OpenSSL / 0.9.8l mod_autoindex_color PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1 mod_perl / 2.0.4 Perl / v5.10.1
Я обнаружил, что добавление & SID = является корнем проблемы.Это происходит в файле PrintContacts.js.Удаление этого загружает страницу соответственно.Но мне DO это нужно, чтобы обойти кеширование.Вы знаете, как решить эту проблему?
Спасибо за помощь.
Решение
При добавлении SID к URL-адресу (для целей кэширования) к нему следует добавить «? Sid =» вместо «& sid =».Изменение этого решает проблему;В конце концов, это была опечатка!
function printContacts() {
xmlHttp = new XMLHttpRequest();
var url = "PHP/getAllContacts.php";
// Workaround for page caching
url = url + "&sid=" + Math.round(Math.random() * 1000000000);
...