这是我第一次遇到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提示也很感激: - )
答案 0 :(得分:0)
你应该这样写 -
$section = $GET['q'];
答案 1 :(得分:0)
不是
getentry.php&q=
,
尝试
getentry.php?q=
$ _GET应为$_GET['q']
如果您使用的是Chrome,请打开控制台并查看是否有错误。
答案 2 :(得分:0)
您应该查看jQuery
您可以简单地使用.get()
来获取所需信息。
$.get()
$.get( "getentry.php?q=" + section, function( data ) {
// log response in console.
console.log(data);
});
答案 3 :(得分:0)
这里可能会出现一些问题,因此有助于获取更多信息。但是,根据您提供的内容,我可以确定您应该检查的以下区域:
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"
元素,并且该代码运行时它位于页面上。另外,尝试在console.log
函数中的xmlhttp
对象上使用onreadystatechange
来查看它在做什么。可能是状态代码永远不会设置为200,或者readyState
永远不会设置为4。