将函数参数从onchange传递给JavaScript函数

时间:2012-05-30 17:46:04

标签: javascript ajax

好的,我正在使用AJAX在更改下拉框时更新我的​​网站的一部分,但是我无法将参数传递给函数使用。

这是HTML:

<script type='text/javascript' src='ajax.js'></script> //Where to find function

<div id="combobox" style="width: 150px; height: 300px; overflow-y: scroll">
  <select onchange="MakeRequest(test); location = this.options[this.selectedIndex].value;"> 
    <option>Races</option>

    <?php ComboBox() ?>
  </select>
   .
   .

这是外部ajax.js文件中的AJAX函数:

function MakeRequest(test) {
  var linkInfo = "teleport.php?call=" + test;
  var xmlHttp = getXMLHttp();

  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4) {
      HandleResponse(xmlHttp.responseText);
    }
  }

  xmlHttp.open("GET", linkInfo, true);
  xmlHttp.send(null);
}

我如何才能使这个工作?

3 个答案:

答案 0 :(得分:1)

location=this.options[this.selectedIndex].value

这是将页面更改为其他位置。那不是AJAX,删除它。

相反,将this.options[this.selectedIndex].value(或仅this.value - 同样的事情)放在test上。

答案 1 :(得分:0)

Ajax本质是异步的。我想你想首先向服务器发送一个AJAX请求,并根据其响应结果,将客户端的用户重定向到另一个页面。

代码中发生的事情是,首先调用MakeRequest()函数,但它会立即返回(因为ajax是异步的),因此onchange属性的下一部分将是调用,用户将被重定向到另一个页面。

要测试,请将ajax调用同步。请参阅here

答案 2 :(得分:0)

<select onchange="MakeRequest(this.value); " />