我的Ajax GET是';t工作


My Ajax GET isn't working .

这是我第一次接触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()函数?你到底在叫它吗?尝试使用alertconsole.log在该函数中吐出section的值——也许它没有被设置?

3)确保请求正在发出,并检查是否收到响应

有了Chrome,你可以打开开发者工具,点击网络选项卡,查看AJAX请求并查看它们的响应。打开网络选项卡,刷新页面,执行任何需要调用loadSection()功能的操作,然后单击"预览"或"响应"选项卡,查看服务器的响应。可能是实际的AJAX请求运行良好,只是没有对响应做任何操作。

4)确保您的响应是根据执行的

我看到你有代码来设置#entry的innerHTML,不管响应文本是什么。确保页面上的某个地方有一个id="entry"元素,并且在运行此代码时它就在页面上。另外,尝试在onreadystatechange函数中的xmlhttp对象上使用console.log,看看它在做什么。状态代码可能从未被设置为200,或者CCD_。