【问题标题】:Uncaught ReferenceError: xmlhttp is not defined?未捕获的 ReferenceError:未定义 xmlhttp?
【发布时间】:2017-03-30 00:36:46
【问题描述】:
<html>
<head>
    <title>List</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Javascript code -->
<script>
         function showUser(str) {
         if (str == " ") {
         document.getElementById("txtHint").innerHTML = " ";
         return;
         } else {
         if (window.XMLHttpRequest) {
         // code for IE7+, Firefox, Chrome, Opera, Safari
         } else {
         // code for IE6, IE5
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.onreadystatechange = function() {
         if (this.readyState == 4 && this.status == 200) {
         document.getElementById("txtHint").innerHTML = this.responseText;
         }
         };
         xmlhttp.open("GET","getuser.php?q="+str,true);
         xmlhttp.send();
         }
        }
</script>
        <!-- CSS for HTML table -->
<style>
    table {
    width: 100%;
    border-collapse: collapse;
    }

    table, td, th {
    border: 1px solid black;
    padding: 5px;
    }

    th {text-align: left;
    }
</style>

</head>
<body>

    <form>
        <select name="users" onchange="showUser(this.value)">
            <option value=" ">Select a person:</option>
            <option value="1">Peter Griffin</option>
            <option value="2">Lois Griffin</option>
            <option value="3">Joseph Swanson</option>
            <option value="4">Glenn Quagmire</option>
       </select>   
   </form>
    <div id="txtHint">Result from PHP script should appear here</div>
 </body>
 </html>

当我通过 Netbeans 在 Google Chrome 浏览器中运行以下 HTML 页面时,当我尝试从列表中选择一个人时遇到此错误(请参阅标题)。

xmlhttp.onreadystatechange = function()

这行代码和下面的代码似乎是基于 Chrome 的开发者工具的关注领域。

select name="users" onchange="showUser(this.value)

谁能指出需要改变的地方?

【问题讨论】:

    标签: javascript php jquery html xmlhttprequest


    【解决方案1】:

    就在下面:

    // code for IE7+, Firefox, Chrome, Opera, Safari
    

    添加:

    xmlhttp = new XmlHttpRequest();

    这样,您将满足使用定义了 XMLHttpRequest 的 javascript 引擎的 Web 浏览器。

    另外,xmlhttp 需要有一个有效的值(句柄)才能正确执行xmlhttp.onreadystatechange = function()

    如果您的浏览器(尤其是非常旧的 IE 浏览器)仍然很挑剔,请将xmlhttp 更改为var xmlhttp,因为变量名之前的 var 意味着定义一个新变量。

    【讨论】:

    • 谢谢。我相信你是对的。但是至于(句柄)点,您到底是什么意思?我对此比较陌生,如果对我来说不是很明显,请道歉。
    • 我忘记在上面的评论中标记你了。
    • 句柄是一个老式术语,表示资源。您知道当您执行 x=y 时,您将变量 x 设置为 y 的值。但如果 y 比普通数值更特殊,那么我想称之为句柄,但实际上它是一个对象。
    • 谢谢。我明白你的意思。
    • 很抱歉,但是您建议我在代码中添加什么来解决函数问题?至于我应该在代码中添加什么对象以及在哪里添加?任何帮助将不胜感激。
    猜你喜欢
    • 2023-01-23
    • 2016-11-03
    • 2011-01-05
    • 2016-01-02
    • 2013-10-06
    • 2016-12-17
    • 1970-01-01
    相关资源
    最近更新 更多