繁体   English   中英

Javascript 简单脚本不执行

[英]Javascript simple script doesn't execute

我一直对学习 JS 犹豫不决,因为我不得不通过 go 来调试脚本。 与 C#/C++ 等的 IDE 相比,对这些东西的支持很差。

我正在尝试一个简单的 PHP 和 JS 脚本来从我的 MySQL 数据库中检索数据,但似乎没有触发“onchange”:

<!DOCTYPE HTML>

<html>

<head>

<script type='text/javascript'>

function ShowUser(name)
{
    if(name == "")
    {
        document.getElementById("display").innerHTML = "Please enter a username to check";
        return;
    }
    if(window.XMLHttpRequest)
    {
        xmlhttp = new XMLHttpRequest();
    }
    else
    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function()
    {
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            document.getElementById("display").innerHTML = xmlhttp.responseText;
        }
    };

    xmlhttp.open("GET", "index.php?uName=" + name, true);
    xmlhttp.send();

}

</script>

</head>

<body>

<form>

    <?php
        $data = array();
        if(!empty($_GET['uName']))
        {
            $r = mysql_connect("localhost", "root", "pass") or die("Couldn't connect to db");
            mysql_select_db("db", $r) or die ("Couldn't select db");
            $q = mysql_query("select * from users where uName = '{$_GET['uName']}'") or die("Couldn't query table");
            $data = mysql_fetch_assoc($q);
            mysql_close($r);
        }

    ?>

    <input type="text" name="fUName" onchange="ShowUser(this.value);" style="width:125px;">

</form>

<div id="display"><?php print_r($data); ?></div>

</body>

</html>

我想念的东西一定很愚蠢。 大部分代码取自 W3schools,并与我自己的 PHP 和 HTML 一起使用。

谢谢你的帮助。

看起来您的代码甚至没有被调用的原因是因为直到文本输入失去焦点之后才会触发onchange事件(至少,这就是 Chrome 中发生的情况)。 因此,您可能正在疯狂地更改文本框的值,但从不点击它之外,所以什么也没有发生。

There are actually a number of wonderful tools out there such as the Closure JavaScript compiler , which can perform type-checking and other static analysis of JavaScript, the Chrome developer tools , which make it possible to test JavaScript on the fly and observe and debug the执行 JavaScript 和 Firefox 的Firebug插件,该插件可与 Chrome 内置的开发人员工具相媲美。 (另请参阅我关于 JavaScript 的类型安全和可测试性的帖子,其中我对出色的工具表示惊讶)。

我通过访问'about:blank'并插入*进行了测试以查看'onchange'是否是Chrome中的问题:

<input type="text" onchange="document.write('changed')" />

而且我观察到,在您按下回车键并最终确定框的内容之前,不会调用更改事件。 您期望它在每次输入新字母时触发的错误吗? 您可能希望在 Chrome 或 Firebug 中加载您的页面并查看脚本控制台以查看是否有任何错误。

* 在 Chrome 的开发者工具中,很容易改变页面的 DOM 来尝试新事物,并在控制台中添加任意 JavaScript 以在实现之前对事物进行原型化。

此外,您可能会发现Google JavaScript 风格指南有助于避免远离热水。

在您将焦点移出输入框之前,更改不会触发。

如果您想要一个好的调试器,请使用以下之一:

  • Chrome/Safari 的 webkit 检查器(又名开发者工具)
  • Firefox 中的 Firebug 插件
  • IE8/9 中的开发者工具

这些工具在调试 Javascript 方面与 C#/C++ 的 IDE 一样出色。

要调试 javascript,我建议在 Chrome 的 web 检查器中使用 javascript 控制台或 ZD6A5C9544ECA9B5CE2C223 的 Firebug 扩展 Opera 也有自己的 javascript 控制台,称为蜻蜓。

取自 Google Chome 帮助页面:

有几种方法可以查看 JavaScript 错误并在 Google Chrome 中进行调试:

JavaScript 控制台:单击页面菜单图标和 select 开发人员 > JavaScript 控制台。 从这里,您将能够查看 JavaScript 执行中的错误,并输入其他 JavaScript 命令来执行。

JavaScript 调试器:作为页面菜单图标 > 开发人员 > 调试 JavaScript 提供,调试器提供了一个命令提示符,您可以从中设置断点、回溯等。 在调试器命令行中键入帮助以开始。

暂无
暂无

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

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