这是我第一次接触Ajax,我对。每件事
最终,我想从数据库中获取值,但为了检查Ajax是否正常工作,我所要做的就是让它显示一行文本。
这是我的代码:
function loadSection(section)
{
if (section=="")
{
document.getElementById("entry").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("entry").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getentry.php&q="+section,true);
xmlhttp.send();
}
这是PHP:
<?php
$section = $GET[$section]; //not currently doing anything, will be needed when
actually searching database
echo "fingers crossed";
?>
据我所知,我所做的唯一一件事与W3Schools网站上的例子不同,那就是将Ajax放在一个单独的.js文件中,但当我将其包含在主页中时,它也不起作用。
非常感谢您的帮助!
编辑添加:谢谢大家!jraede正确地发现该函数从未被调用,jquery的提示也值得赞赏:-)
你应该这样写-
$section = $GET['q'];
不是getentry.php&q=
,
尝试
getentry.php?q=
$_GET中应为$_GET['q']
若您正在使用chrome,请打开控制台,看看是否有任何错误。
您应该查看jQuery
您可以简单地使用.get()
来获取所需的信息。
$.get()
示例
$.get( "getentry.php?q=" + section, function( data ) {
// log response in console.
console.log(data);
});
这里可能会出现一些问题,因此了解更多信息会有所帮助。然而,根据您提供的内容,我可以确定您应该检查的以下领域:
1)确保javascript和PHP中的语法都是正确的
您的javascript有一些错误,人们已经指出了,即"getentry.php&q="
应该是"getentry.php?q="
。
在PHP中,您正在尝试检索$GET[$section]
,它有两个错误。首先,要从查询字符串中检索变量,需要使用$_GET
,而不是$GET
。其次,假设$section
尚未定义,或者至少查询字符串中没有匹配的变量,则此代码将返回一个空值。正如许多人已经指出的那样,这应该是$_GET['q']
。
2)确保你的脚本正在做你认为它正在做的事情
您在哪里调用loadSection()
函数?你到底在叫它吗?尝试使用alert
或console.log
在该函数中吐出section
的值——也许它没有被设置?
3)确保请求正在发出,并检查是否收到响应
有了Chrome,你可以打开开发者工具,点击网络选项卡,查看AJAX请求并查看它们的响应。打开网络选项卡,刷新页面,执行任何需要调用loadSection()
功能的操作,然后单击"预览"或"响应"选项卡,查看服务器的响应。可能是实际的AJAX请求运行良好,只是没有对响应做任何操作。
4)确保您的响应是根据执行的
我看到你有代码来设置#entry的innerHTML,不管响应文本是什么。确保页面上的某个地方有一个id="entry"
元素,并且在运行此代码时它就在页面上。另外,尝试在onreadystatechange
函数中的xmlhttp
对象上使用console.log
,看看它在做什么。状态代码可能从未被设置为200,或者CCD_。