почему, когда я передаю выбранную опцию в раскрывающемся списке в PHP через AJAX всегда дает мне первый вариант? - PullRequest
0 голосов
/ 21 октября 2010

это мой код:

 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 Ответ

1 голос
/ 22 октября 2010

Проблема не в получении значения, а в ловушке есть две вещи:

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

... вы можете подумать, что вы задали что-то для выполнения события onclick кнопки, но это не так. Эта функция будет выполнена немедленно, а не по щелчку.

Вы должны написать это так:

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

Другая проблема: тип по умолчанию <button> - submit, поэтому, если вы нажмете кнопку, форма будет отправлена. Вы можете либо установить тип кнопки как «кнопка», либо отменить отправку формы через javascript, иначе ваш AJAX-запрос бесполезен, поскольку форма будет отправлена ​​(и страница будет перезагружена)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...