使用Ajax填充下拉列表

时间:2010-12-14 14:52:32

标签: javascript ajax

这里有aob到ajax的总数,我的语法有多接近?我希望第二个下拉框依赖于第一个下拉框。我知道这不是解决这个问题的最简单方法,所以任何帮助都是值得赞赏的。 acura.txt是一个带有标记的文本文件,用于创建另一个下拉列表。谢谢大家的帮助!

JavaScript的:

function loadXMLDoc() {
    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("acura").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "acura.txt", true);
    xmlhttp.send();
}

HTML:

<select id="stateinjured">
    <option selected="selected">Select your state</option>
    <option id="acura" onClick="loadMXLDOC">Acura</option>
    <option id="bmw">BMW</option>
    <option id="audi">Audi</option>
    <option id="benz">Benz</option>
</select>

1 个答案:

答案 0 :(得分:0)

<select>标记(可能具有自己的<option>内容)填充到<option>标记的内容中并不起作用。这就是您的代码现在将尝试做的事情。

这段代码:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
  document.getElementById("acura").innerHTML=xmlhttp.responseText;
  }

“id”值为“acura”的元素是页面上<option>中的<select>个标记之一。因此,如果该响应文本仅为<select>,那么它将会出错。

也许你只想在页面上看到另一个<span>,或者其他东西;这取决于它应该是什么样的。

另一件事:您不想在<option>上选择“点击”事件。可以选择(由用户)选项而不发生任何“点击”。您可能应该跟踪<select>标记上的“更改”事件,并检查处理程序中的值。