繁体   English   中英

我的Ajax GET无法正常工作。

[英]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或readyState永远不会设置为4。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM