文本字段不通过AJAX传递数据

时间:2014-05-18 07:24:10

标签: javascript ajax webforms

我一直在玩我在网上找到的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>

1 个答案:

答案 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>