如果我没有正确表达我的问题,我很抱歉,但我会尽力解决的。我一直在网上寻找可以帮助我解决这个问题的信息,但没有成功。只是一点背景。我是一名经验丰富的网络程序员,尽管在此之前几年没有做过网络工作,但我以前在PHP和javascript方面做过一些工作,现在我使用C++,所以我在编程原理方面相当有经验。
我正在构建一些博客软件,在4wordpress和jQuery中,我根本不在乎。所以请放过它。。。我正在通过一个简单的AJAX请求函数将一些博客条目加载到一个元素中。这个函数的详细信息如下:(它被更改为我在网上发现的一个3函数的例子,当时我正试图调试这个问题,似乎没有人的"简单"代码可以工作。(
该问题在代码下面有详细说明。
var httpObject = null;
function getHTTPObject(){
if(window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
else if(window.XMLHttpRequest) return new XMLHttpRequest();
else {
alert("Your browser does not support AJAX.");
return null;
}
}
function setOutput(){
if(httpObject.readyState == 4){
document.getElementById("entries").innerHTML = httpObject.responseText;
}
}
function loadEntries(s) {
httpObject = getHTTPObject();
if (httpObject != null) {
httpObject.open("GET","entries.php?" + s,true);
httpObject.send(null);
httpObject.onreadystatechange = setOutput;
}
}
简单的东西?我似乎看不出有什么错误。这就是函数的调用方式:
<div id='entries'>
<script type="text/javascript">
loadEntries('blog=<?php echo $process['id']; ?>&page=0');
</script>
</div>
也很简单。以下是"entry.PHP"的PHP代码:
<?php
require_once('inc/bloginc.php');
if(isset($_GET['page'])) {
$page = intval($_GET['page']);
} else $page = 0;
$entries = 3;
$init = $page * $entries;
$limit = $entries + $init;
if(!isset($_GET['blog'])) die("WTF DIE");
else $blog = mysql_real_escape_string($_GET['blog']);
$tag = '';
if(isset($_GET['tag'])) {
$tag = mysql_real_escape_string($_GET['tag']);
echo "<span class='blogEntryBody'>viewing entries tagged with: '" . $tag . "' / <a href='' onclick='"";
echo "loadEntries('blog=" . $blog . "')";
echo "'">clear?</a></span></br>";
echo "<hr>";
}
$numposts = nResults($blog, $tag);
buildEntries(getEntries($blog, $tag, $init, $limit));
if($numposts > $entries) {
echo "</br><span class='blogEntryBody'>";
if($page > 0) {
echo "<a href='' onClick='"";
echo "loadEntries('blog=" . $blog;
if(isset($_GET['tag'])) echo "&tag=" . $tag;
echo "&page=" . (--$page) . "')";
echo "'">Previous Entries</a>";
echo " / ";
}
echo "<a href='' onClick='"";
echo "loadEntries('blog=" . $blog;
if(isset($_GET['tag'])) echo "&tag=" . $tag;
echo "&page=" . (++$page) . "')";
echo "'">Next Entries</a>";
echo "<br></span>";
}
?>
好吧,现在事情变得棘手了:
将变量发送到"entries.php"时,例如:entries.php?blog=walk&第1页
它们间歇性地工作,其中一些工作,但有些不工作。
我知道这不是PHP代码,因为在一个新窗口中加载entries.PHP并手动传递这些变量会得到所需的结果。发生的情况是,HTTPGET请求在Firefox webdev控制台中返回"undefined",例如:
得到http://localhost/meg/entries.php?blog=walk&tag=lorem〔未定义的2ms〕
^"tag"变量通常起作用,通常是"page"变量将所有内容发送到混乱状态。
实际情况是,在单击"下一页"后,您会很快看到一个空白的div,然后它会很快恢复到以前的状态。您可以在控制台中看到所有这些加载。它将返回"undefined",然后重新加载以前的状态。这实在令人费解。
我不明白为什么会发生这种事。
我希望我已经提供了足够的信息,并以易于理解的格式列出。我不太会问问题。我通常只是"谷歌"或RTM。但我想这一次也许其他人以前也会看到。
哦,我已经用铬测试过了,同样的问题。我真的很困惑,但我有可能忽略了一些微小而关键的东西。
谢谢!
ajax在chrome&explorer,所以我建议使用jquery,因为在jquery中,它们已经包含了explorer和chrome的代码。
你可以使用CCD_ 1方法。