为什么当我通过AJAX将下拉选项中的选定选项传递给PHP总是给我第一个选项?

时间:2010-10-21 17:57:06

标签: php javascript ajax drop-down-menu

这是我的代码:

 comenzar = function(){
  document.getElementById('gene').onclick = xmlhttpPost("generador.php");
 }

 xmlhttpPost = function(strURL){
  xmlHttpReq = false;
  self = this;
  self.xmlHttpReq = new XMLHttpRequest();
  self.xmlHttpReq.open('POST', strURL, true);
  self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  self.xmlHttpReq.onreadystatechange = function(){
   if(self.xmlHttpReq.readyState == 4){
    update(self.xmlHttpReq.responseText);
   }
  }
  self.xmlHttpReq.send(getquerystring());
 }

 getquerystring = function(){
  form = document.getElementById('formu');
  combi = document.getElementById('sele').options[document.getElementById('sele').selectedIndex].value;
  qstr = "tres=" + escape(combi);
  return qstr;
 }

 update = function(resu){
  document.getElementById('tag').innerHTML = resu;
 }
 window.onload = comenzar;

 </script>
</head>
<body>
 <form id=formu>
  <select id=sele>
   <option>C</option>
   <option>v</option>
  </select>
  <button id=gene><p>generate</p></button>
 </form>
 <p id=tag></p>
</body>
</html>

//generador.php
<?php
echo( "tu combinacion" . $_POST['tres'] );
?>

1 个答案:

答案 0 :(得分:1)

问题不在于获得价值,钩子是这两件事:

document.getElementById('gene').onclick = xmlhttpPost("generador.php");

...你可能会认为,你将某些东西设置为按钮的onclick-Event,但是你没有。 此功能将立即执行,而不是单击执行。

你应该这样写:

document.getElementById('gene').onclick = function(){xmlhttpPost("generador.php");}

另一个问题: <button>的默认类型是提交,因此如果您点击该按钮,则会发送表单。 您可以将按钮类型设置为“按钮”或取消通过javascript提交表单,否则您的AJAX请求无效,因为表单将被发送(并且页面重新加载)