我一直在玩我在网上找到的AJAX功能,让我感到困惑的是使用下拉列表,我能够将值发送到我的搜索页面,而使用文本字段我遇到了困难。
<form name="search" action="" method="POST">
Search: <input type="text" name="find" />
<input type="submit" value="Search" onclick="showUser()"/>
</form>
这是我正在使用的两种形式。底部的那个工作,而顶部的那个是我遇到的问题。知道为什么会这样吗?
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="200">200</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</form>
<script>
function showUser(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","sfindme.php?q="+str,true);
xmlhttp.send();
}
</script>
答案 0 :(得分:1)
如果您不希望页面重新加载;然后使用一个简单的按钮来触发对showUser
函数的调用,而不是提交按钮。所以你的代码应该是:
<form name="search" action="" method="POST">
Search: <input type="text" id="find" />
<input type="button" value="Search" onclick="showUser(document.getElementById('find'))"/>
</form>
<div id ="txtHint">
</div>
<script>
function showUser(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","sfindme.php?q="+str,true);
xmlhttp.send();
}
</script>