繁体   English   中英

AJAX-PHP-内容未加载

[英]AJAX - PHP - Content Not Loading

我是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。 K是大写

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

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

再次打错字。 reponseText-> responseText

这是因为您指定了正确的函数名称。

你定义一个函数命名NickName叫另一个名为NicKName

更新为评论

由于另一个拼写错误,它以未定义的形式出现,因此您将xmlhttp.reponseText替换为xmlhttp.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

我可以看到您的函数名称中有一个拼写错误。 当您调用该函数时,您已经使用了NicKName,但是该函数实际上定义为NickName。 (k)在您的通话说明中大写。

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

例如。 上面的代码行可以替换为...。

$( '#divNick')负载( 'myphp.php键=?' +缺口);

只需一行。 另一个是您还可以使用$ .ajax,它可以让您根据需要执行POST和GET请求。

最重要的是,您说过您是Ajax的新手。 如果是这样,为什么您还不开始阅读jQuery ...除了节省时间和完成时间以外,它还非常有益,您将看到多少个职位需要jquery作为技能。

希望这会有所帮助。

在您的Ajax代码上拼写错误,而不是-document.getElementById(“ divNick”)。innerHTML = xmlhttp.responseText ; 您输入了-document.getElementById(“ divNick”)。innerHTML = xmlhttp.reponseText ;

暂无
暂无

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

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