AJAX - PHP -内容不加载

AJAX - PHP - Content Not Loading

本文关键字:加载 PHP AJAX      更新时间:2023-09-26

我是AJAX新手。

我正试图从我的PHP文件加载一些内容到load.html。我在文本框的onKeyUp事件上创建了这个函数。

但是它总是显示"UNDEFINED"作为输出。(

请帮帮我

load.html文件

<!DOCTYPE html>
<html>
    <head>
        <script>
            function NickName(nick){
                var xmlhttp;
                if(window.XMLHttpRequest){
                    xmlhttp = new XMLHttpRequest();
                } else {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.onreadystatechange = function(){
                    if(xmlhttp.status==200 && xmlhttp.readyState ==4){
                        document.getElementById("divNick").innerHTML = xmlhttp.reponseText;
                    }
                }
                xmlhttp.open("GET","myphp.php?key="+nick,true);
                xmlhttp.send();
            }
        </script>
    </head>
    <body>
        <div id="divNick"></div>
        <input type="text" id="text_box" onKeyUp="NickName(this.value)">
    </body>
</html>

和myphp.php文件

<?php
if(isset($_GET['key']))
{
    $key = $_GET['key'];
    $choice1 = "Shifar";
    $choice2 = "Nidal";
    if($key==$choice1)
    {
        echo "Shifz";
    }
    else if($key==$choice2)
    {
        echo "Steavz";
    }
    else
    {
        echo "No Match Found";
    }
}


?>

提前感谢。Shifar Shifz

这是因为您没有指定正确的函数名。

您定义了一个名为NickName的函数并调用了另一个名为NicKName的函数

更新为comments

它是未定义的,因为你把xmlhttp.responseText打错了xmlhttp.reponseText

有打字错误。你的函数名是昵称,你正在调用昵称。K为大写

更改document.getElementById("divNick").innerHTML = xmlhttp.reponseText;

to document.getElementById("divNick").innerHTML = xmlhttp.responseText;

又是一个错别字。responseText -> responseText

试试:

xmlhttp.open("GET","myphp.php?key="+nick,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send();
xmlhttp.onreadystatechange = function()
{
    if(xmlhttp.status==200 && xmlhttp.readyState ==4)
    {
        document.getElementById("divNick").innerHTML = xmlhttp.reponseText;
    }
}

我认为顺序很重要,NickName不是NicKName

我可以看到你的函数名有一个打字错误。当您调用函数时,您使用了昵称,但该函数实际上被定义为昵称。(k)在您的呼叫声明中大写。

给您的其他建议是,像您所做的那样编写Ajax是一种非常古老的方法。最重要的是,你将有许多浏览器的大量代码…你应该处理所有的浏览器。那么为什么不使用其他ajax方法呢?我建议您使用jQuery $.ajax。它非常简单,可以处理所有的跨浏览器兼容性问题。

例如

。上面这行代码可以替换为....

$ (' #divNick ') .load (myphp.php ?关键= ' +尼克);

只有一行。另一个是你也可以使用$。它可以让你同时做POST和GET请求,如你所愿。

最重要的是你说你是Ajax的新手。如果是这样,为什么你还没有开始阅读jQuery…除了节省你的时间和当你完成它非常有益,你会看到有多少工作岗位需要jquery作为技能集。

ajax代码中的拼写错误而不是- document.getElementById("divNick")。innerHTML = xmlhttp.responseText;您输入了- document.getElementById("divNick")。innerHTML = xmlhttp. responsetext ;