我有两个select选择框,一个文本框
目前第一个已经加载了项目分类
希望通过选择第一个select,无刷新加载第二个select
再通过选择第二个select,无刷新给文本框加载查询到的名称网上方法尝试过一二,但都有些不明的问题存在。
希望有高手指教一个具体点的思路或者实现方法。谢谢指教
就和发帖下面 选择论坛的功能中两个select一样

解决方案 »

  1.   

    select的onchang事件给ajax传值,再到接收值的页面做一个sql查询。为的是给你的第二个select用,sql的返回值给到ajax做接收
      

  2.   

    js代码<script language="javascript" type="text/javascript" src="/js/ajaxUtil.js"></script>
    <script language="javascript" type="text/javascript">
      var objectId="";
      function getArea(id,objid){
       objectId=objid;
       var url="/admin/jdyd/group_add.php";
       var params="vegsortid="+id;
       get(url,params,processData);
      
     }
    function processData(xhr){
     //$$(objectId).innerHTML=xhr.responseText;
     
     //先获取所有的select
     var sel=document.getElementsByTagName("select");
     //添加option
     var op=document.createElement("option");
     var text=document.createTextNode("objectId");
     //追加到option中
     op.appendChild(text);
     sel.appendChild(op);
     //document.getElementById("div1").appendChild(sel);
     }
    </script>
    ajaxUtil.jsfunction get(url1,params,methodName){
      /*
     ajax使用的基本步骤: 1、初始化ajax引擎
     2、封装url(设定要请求的路径)
     3、打开ajax引擎(同步方式、异步的方式;本次传输使用get还是post)
     4、将要请求的信息通过引擎发送到服务器进行处理
     5、监听服务器返回给ajax引擎的处理状态
     6、判断是否交互完毕,如果交互完毕则取出返回的数
      */ 
      //初始化ajax引擎
      var xhr = new XMLHttpRequest();//这种方式只针对ie浏览器,并且ie6以下还有问题。
      var url=url1+"?"+params+"&r="+Math.random();  //alert(url);
      //打开引擎
      xhr.open("get",url,true);   //readyState=1
     
      //发送请求
      xhr.send(null);   //readyState=2
     
      //监听readyState值的改变,每次改变都会执行下面额函数 
      xhr.onreadystatechange=function (){
      
       //如果等于4,表明交互完毕 ,我们可以取出服务器返回的内容
       if(xhr.readyState==4){
               
     //动态调用方法,为什么说是动态呢?方法的名称是个变量methodName
       methodName(xhr);
       
       }
      
      }}//$$()方法用于方便取出 id="id" 的对象
    function $$(id){
     
     return document.getElementById(id);
    }html中给select添加onchange事件 onchange="getArea(this.value,'sltveg')"
    但是仅在页面向ajax传值这一步  js就报错了
    TypeError: sel.appendChild is not a function
    [在此错误处中断]  sel.appendChild(op);另外这段ajax.js中注释说//初始化ajax引擎
      var xhr = new XMLHttpRequest();//这种方式只针对ie浏览器,并且ie6以下还有问题。
    我担心有兼容性的问题,所以另求方法
      

  3.   

     var sel=document.getElementsByTagName("select");  
    这是取得页面所有 select 下拉框。明显有问题,你应该根据id来取要取得兼容的xhr 对象,应该想下面这样:
    if (window.XMLHttpRequest)
      {  // code for IE7+, Firefox, Chrome, Opera, Safari
         var  xhr=new XMLHttpRequest();
      }
    else
      {  // code for IE6, IE5
       var  xhr=new ActiveXObject("Microsoft.XMLHTTP");
      }
      

  4.   

    感觉还是用jquery简单点 而且兼容性还好
    如果有实力 就是js