0

好的,当下拉框更改时,我目前正在使用 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);
}

我将如何让这个工作?

4

3 回答 3

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

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

相反,把那个this.options[this.selectedIndex].value(或只是this.value- 一样的东西)放在你放的东西上test

于 2012-05-30T17:50:38.537 回答
0

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

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

要进行测试,请使您的 ajax 调用同步。见这里

于 2012-05-31T05:22:32.833 回答
0
<select onchange="MakeRequest(this.value); " />
于 2012-05-31T05:30:16.833 回答