Javascript 通过AJAX从表单传递多个值

Javascript 通过AJAX从表单传递多个值,javascript,php,ajax,Javascript,Php,Ajax,我试图通过AJAX将表单中的值传递到我的SQL查询文件(findme.php)中 我能够遵循W3school的示例,但是他们的AJAX脚本只传递1个值。有没有一种方法可以传递多个值 <form name="search" method="post" action=""> Name: <input type="text" name="findName"/> Location: <input type="text" name="findLocation"/> Pr

我试图通过AJAX将表单中的值传递到我的SQL查询文件(findme.php)中 我能够遵循W3school的示例,但是他们的AJAX脚本只传递1个值。有没有一种方法可以传递多个值

<form name="search" method="post" action="">
Name: <input type="text" name="findName"/>
Location: <input type="text" name="findLocation"/>
Price: <input type="text" name="findPrice"/>
<Select NAME="123">
<Option type="checkbox" value="">
<Option type="checkbox" value="=">Equal
<Option type="checkbox" value="<">Less than
<Option type="checkbox" value=">">More than
</select>

<input onclick="showUser(); return false;" type="submit" name="search" value="Search"/>
</form>
<div id="txtHint">Info will be listed here.</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("GET","findme.php?q="+str,true);
  xmlhttp.send();
}
</script> 

知道怎么做吗?

您必须使用send()调用发送POST请求的body参数:

您的参数需要进行URI编码,以避免出现“&”和其他保留字符的问题


并且不要忘记将请求类型更改为POST而不是GET

如果要执行表单POST(您正在服务器上使用$\u POST数组),可以通过以下方式执行-

var myForm = document.getElementById('<form id>'); // add an id to the form and use it here
var formData = new FormData(myForm);
xmlhttp.open("POST","findme.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(formData);
var myForm=document.getElementById(“”);//在表单中添加id并在此处使用
var formData=新formData(myForm);
open(“POST”,“findme.php”,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xmlhttp.send(formData);

此代码的第一个可能的副本将不起作用,因为这行“xmlhttp.open(“GET”,“findme.php?q=“+str,true”);”似乎意味着GET而不是POST。PHP脚本端返回的$_POST为空。@rakeshhetty-OP使用的是纯JavaScript,而不是您在链接中指出的jQuery。您好@Jay Blanchard,您能向我解释一下
xmlhttp.send(“findName=Henry&findLocation=Washington”)
的工作原理吗?这就是我通过ajax向PHP发送多个值的方式吗?我还注意到你静态地分配了“亨利”和“华盛顿”。如何链接我的文本字段?我通常使用FormData,请参阅修改后的答案。谢谢修改后的答案。它似乎没有传递任何值,因为我一直在点击我的空值临时错误消息。我只是试图用一个简单的if-else语句捕捉空值。基本上,我在第6行的D:\xampp\htdocs\findme.php中得到了这个
注意:未定义的索引:findName和我自己的echo语句,它告诉我值为空,我真的不明白您是如何分配这里的文本字段的
var params=“name=value&name1=value1”。能给我解释一下是怎么做的吗?干杯
var params = "name=value&name1=value1";
xmlhttp.send(params);
var myForm = document.getElementById('<form id>'); // add an id to the form and use it here
var formData = new FormData(myForm);
xmlhttp.open("POST","findme.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(formData);