如果我没有正确表达我的问题,我道歉,但我会尽我所能。我一直在网上寻找可以帮助我解决这个问题的信息,但无济于事。 只是一点背景。我是一名经验丰富的网络编码员,虽然在此之前的几年内还没有做过网络工作,但我以前在PHP和javascript方面做了很多工作,而且这些天我使用C ++,所以我很有经验编程原则。
我正在构建一些博客软件,以及inb4wordpress和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>
也很简单。 这是'entries.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>";
}
?>
好的,现在这里的事情变得棘手:
将vars发送到'entries.php'时,例如:entries.php?blog = walk&amp; page = 1
他们间歇性地工作,其中一些工作,但有些人没有。
我知道这不是PHP代码,因为在新窗口中加载entries.php并手动传递这些变量会引发所需的结果。会发生什么是HTTP GET请求在Firefox webdev控制台中返回'undefined',例如:
[14:47:33.505] GET http://localhost/meg/entries.php?blog=walk&tag=lorem [undefined 2ms]
^'tag'变量通常有效,它通常是'page'变量,可以发送所有乱码。
在点击“下一页”后,您会快速看到一个空白div,然后它会快速反弹回到之前的状态。您在控制台中看到所有这些加载。它将返回'undefined'然后重新加载以前的状态。这简直令人费解。
我不明白为什么会这样。
我希望我提供了足够的信息,并以易于理解的格式进行设置。我很想问问题。我通常只是'googleit'或RTM。但我想也许这个时候别人会看到这个。
哦,我在chrome中测试了同样的问题。我真的很困惑,但我可能会忽略一些小而重要的东西。
谢谢!
答案 0 :(得分:0)
好吧,有几次ajax在chrome&amp; explorer所以我建议使用jquery,因为在jquery中他们已经包含了explorer和chrome的代码。
你可以用 <{1}}方法很容易。