我的Ajax GET不起作用。

时间:2013-11-21 00:45:11

标签: javascript php ajax

这是我第一次遇到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提示也很感激: - )

4 个答案:

答案 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()功能?你在打电话吗?尝试使用alertconsole.log在该函数中吐出section的值 - 也许它没有被设置?

3)确保请求已经结束,并检查您是否收到回复

使用Chrome,您可以打开开发人员工具,点击网络标签,然后观看AJAX请求并查看其响应。打开网络选项卡,刷新页面,执行调用loadSection()功能所需的操作,然后单击“预览”或“响应”选项卡以查看服务器已响应的内容。可能是实际的AJAX请求工作正常,而且它没有对响应做任何事情。

4)确保您的回复得到采取行动

我看到你有代码来设置#entry的innerHTML和响应文本。确保页面上某处有一个id="entry"元素,并且该代码运行时它位于页面上。另外,尝试在console.log函数中的xmlhttp对象上使用onreadystatechange来查看它在做什么。可能是状态代码永远不会设置为200,或者readyState永远不会设置为4。