我创建了一个非常基本的页面,使用AJAX从我的contact
MySQL表中检索所有联系人:
的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
的本地主机
12/08/2010 2:47:27 PM
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
我发现添加&amp; SID =是问题的根源。这发生在PrintContacts.js文件中。删除它会适当地加载页面。但我 DO 需要这样才能解决缓存问题。你知道怎么解决这个问题吗?
感谢所有帮助。
将SID添加到url(用于缓存目的)时,应该附加“?sid =”而不是“&amp; sid =”。改变这个解决了这个问题;毕竟这是一个错字!
function printContacts() {
xmlHttp = new XMLHttpRequest();
var url = "PHP/getAllContacts.php";
// Workaround for page caching
url = url + "&sid=" + Math.round(Math.random() * 1000000000);
...
答案 0 :(得分:1)
使用AJAX时,网址应根据浏览器的当前位置进行链接,而不是javascript文件的位置。
将printContacts()中的url更改为“PHP / getAllContacts.php”。
编辑:好的......我明白了!在PrintContacts.js中,您需要更改此行url = url + "&sid=" + Math.round(Math.random() * 1000000000);
到此......
url = url + "?sid=" + Math.round(Math.random() * 1000000000);
请注意那里的问号。拥有&amp;让它找到一个名为getAllContacts.php&amp; 192837的文件,而不是名为getAllContacts.php的文件。
答案 1 :(得分:0)
我只建议一件事
请您使用完整的网址
var url = "http://www.blahblah.com/PHP/getAllContacts.php";
答案 2 :(得分:0)
我的猜测是你的错误在于:
var url = "../PHP/getAllContacts.php";
将url替换为绝对url或相对于域而不是相对于JS文件的内容。