我一直对学习JS犹豫不决,因为我不得不试图调试脚本。与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。
感谢您的帮助。
答案 0 :(得分:3)
看起来你的代码甚至没有被调用的原因是因为onchange
事件直到文本输入失去焦点之后才被触发(至少,这是Chrome中发生的事情)。所以你可能会像疯了一样改变文本框的值,但永远不要点击它,所以没有任何反应。
答案 1 :(得分:1)
实际上有许多很棒的工具,例如Closure JavaScript compiler,它可以执行类型检查和JavaScript的其他静态分析,Chrome developer tools,这使得可以测试JavaScript飞行并观察和调试JavaScript的执行,以及Firefox的Firebug插件,这与Chrome内置的开发人员工具相当。 (另请参阅my post about type-safety and testability of JavaScript,其中我对这个伟大的工具表示惊讶)。
通过访问'about:blank'并插入*:
,我做了一个测试,看看'onchange'是否是Chrome中的问题<input type="text" onchange="document.write('changed')" />
我观察到只有在你输入并完成框内容后才会调用change事件。是否每次输入新信件时都会触发您想要触发的错误?您可能希望在Chrome或Firebug中加载页面,并查看脚本控制台以查看是否存在任何错误。
*在Chrome中的开发人员工具中,可以非常轻松地更改页面的DOM以尝试新事物,并在控制台中添加任意JavaScript以实现原型。
此外,您可能会发现Google JavaScript style guide对避免热水有用。
答案 2 :(得分:0)
在您将焦点移出输入框之前,不会触发更改。
如果你想要一个好的调试器,请使用以下方法之一:
这些工具在调试Javascript方面与C#/ C ++的IDE一样好。
答案 3 :(得分:0)
要调试javascript,我建议您使用Chrome网络检查器中的javascript控制台或firefox的Firebug扩展程序。 Opera也有自己的javascript控制台叫做dragonfly。
摘自Google Chome帮助页面:
有几种方法可以查看JavaScript错误并在Google Chrome中调试它们:
JavaScript控制台:点击“网页”菜单图标,然后选择“开发人员”&gt; JavaScript控制台。从这里,您将能够查看JavaScript执行中的错误,并输入其他JavaScript命令来执行。
JavaScript调试器:可用作页面菜单图标&gt;开发人员&gt;调试JavaScript,调试器提供了一个命令提示符,您可以从中设置断点,回溯等。在调试器命令行键入help以开始。