weixin_33727510 2015-04-14 17:22 采纳率: 0%
浏览 11

AJAX预测搜索

I have a basic HTML form that I want to fill in with the names of the US states. I have all of 50 of them (Alabama to Wyoming) stored in the following format:

<?xml version="1.0"?>
<states xml:lang="EN">
<item>
<label>Alabama</label>
<value>AL</value>
</item>
<item>
<label>Alaska</label>
<value>AK</value>
</item>
...

I wrote some AJAX for this:

function ajaxFunction(str) {
  if (str.length==0) { 
    document.getElementById("search").innerHTML="";
    document.getElementById("search").style.border="0px";
    return;
  }
  var ajaxRequest = new XMLHttpRequest();
  ajaxRequest.onreadystatechange = function() {
    if (ajaxRequest.readyState==4 && ajaxRequest.status==200) {
      document.getElementById("search").innerHTML=ajaxRequest.responseText;
      document.getElementById("search").style.border="1px solid #A5ACB2";
    }
  }
  ajaxRequest.open("GET","USA_States.xml",true);
  ajaxRequest.send();
}

HTML:

<form id = "form1">
  <input onkeyup="ajaxFunction(this.value);" type = "text" size = "30" id = "text1" autocomplete="off"/>
  <div id = "search">

And it still does not work. Suggestions? What am I doing wrong?

  • 写回答

1条回答 默认 最新

  • ?yb? 2015-04-14 18:54
    关注

    You might be looking for this.Replace your javascript code with this.

    function ajaxFunction(str) {
      if (str.length==0) { 
        document.getElementById("search").innerHTML="";
        document.getElementById("search").style.border="0px";
        return;
      }
      var input=document.getElementById('text1').value;
      var ajaxRequest = new XMLHttpRequest();
      ajaxRequest.onreadystatechange = function() {
        if (ajaxRequest.readyState==4 && ajaxRequest.status==200) {
            var res=ajaxRequest.responseXML;
            var states=res.getElementsByTagName("states");
            var elem=states[0];
            var items=res.getElementsByTagName("item");
            document.getElementById("search").innerHTML="";
        for(var i=0;i<items.length;i++){
    
            var item=items[i].getElementsByTagName("label");
            var state=item[0].innerHTML;
            var len=str.length;
            var match=state.substr(0,len);
            if(match.toUpperCase()==input.toUpperCase()){
                var val=items[i].getElementsByTagName("value");
                var value=val[0].innerHTML;
                var e = document.createElement('span');
                e.innerHTML = state+"("+value+")&nbsp;&nbsp;";
                document.getElementById("search").appendChild(e.firstChild);
            }
         }
    
          document.getElementById("search").style.border="1px solid #A5ACB2";
        }
      }
      ajaxRequest.open("GET","USA_States.xml",true);
      ajaxRequest.send();
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站