我正在面试,别人让我做一个AJAX功能的,随便让我查什么,去问谁,只要能做出来就OK解30分钟。。比如一个省份,下面有很多诚市,不用每次去从数据库读取数据,用ajax做,如何做啊。晕。好心人帮帮忙吧。谢谢了,请指点一下,以前都没用过ajax。晕了啊

解决方案 »

  1.   

    参考下面这个:http://download.csdn.net/source/331627
      

  2.   

    正在面试,以前没有还没用过ajax,30分钟就想学会ajax并做出你的题目不大可能吧,劝你还是放弃这个题目吧
      

  3.   

    不用每次去从数据库读取数据,    (要用到数据缓存)
    用ajax做                       (目的是页面无刷新)
      

  4.   

    http://blog.csdn.net/hanhenry/archive/2007/10/16/1827482.aspx
      

  5.   

    不用每次去从数据库读取数据?????????????????
    这需要ajax吗?ajax是功能是无刷新往返服务器吧.不读数据库,你去服务器取什么东西?直接把数据写入客户端,用javascript读不就完了?
      

  6.   

    1.他给你的环境是否有ajax控件?
    如果没有:.免費下載﹕http://ajax.asp.net  
    microsoft asp.net 2.0 Ajax Extension 1.0  
    下載安裝后﹐會在vs2005的工具箱中看到ajax extension 標簽和几個控件.(記得安裝后重新啟動vs2005)
    2.如果有:
    HTML:<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:DropDownList ID="list1" runat="server"  AutoPostBack ="true" 
                        onselectedindexchanged="list1_SelectedIndexChanged">
                    </asp:DropDownList>
                    <asp:DropDownList ID="list2" runat="server">
                    </asp:DropDownList>
                </ContentTemplate>
                <Triggers >
                  <asp:AsyncPostBackTrigger ControlID ="list1" EventName ="SelectedIndexChanged" />
                </Triggers>
            
            </asp:UpdatePanel>
        </div>
        </form>
    </body>
    </html>3.CS:public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    list1.Items.Add("请选择省份");
                    list1.Items.Add("广东");
                    list1.Items.Add("河南");
                    list1.Items.Add("山东");                list2.Items.Add("请选择");
                }
            }        protected void list1_SelectedIndexChanged(object sender, EventArgs e)
            {
                list2.Items.Clear();            if (list1.SelectedValue == "广东")   //楼主可在此根据自己的情况从数据中获得数据,并对list进行加载
                {
                    list2.Items.Add("深圳");
                    list2.Items.Add("东莞");
                    list2.Items.Add("广州");            }
                if (list1.SelectedValue == "河南")
                {
                    list2.Items.Add("洛阳");
                    list2.Items.Add("新乡");
                    list2.Items.Add("郑州");            }
            }
        }
      

  7.   

    你要是在google,baidu上搜估计早找着答案了..
      

  8.   

    发一个给你吧..
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    //以XML求取数据
    //参数:
    //obj,当前动作的下拉框
    //fullName:要填充的下拉框
    function XmlPost(obj,fullName)
    {
    //求取当前下拉框的值
       var svalue = obj.value;
       //定义要填充的对象
       var fullObj = document.all(fullName);
      
       //定义取值地址
       var webFileUrl = "?sortid=" + svalue;
      
       //定义返回值
       var result = "";
      
       //开始取值过程
       var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
       xmlHttp.open("POST", webFileUrl, false);
       xmlHttp.send("");
       result = xmlHttp.responseText;   //如果有取到值,则根据格式进行拆分
      //注意如果选择了第一行"请选择"空行时,是取不到值的,因此多加了一个条件
       if(result != "" && svalue != "")
       {
       //先清空原有的值
         fullObj.length=0;
        
         //拆分值成数组
         var piArray = result.split(",");
        
         //循环数组
         for(var i=0;i<piArray.length;i++)
         {
         //再拆分成ID及名称
           var ary1 = piArray[i].toString().split("|");
           //逐一添加项
           fullObj.options.add(new Option(ary1[1].toString(),ary1[0].toString()));
         }
       }
       else
       {
         //如果没有取到值,则清空要填充的下拉框的值
         fullObj.length = 0;
         fullObj.options.add(new Option("请选择",""));
       }
    }
    //-->
    </SCRIPT>
    </HEAD>
    <body>
    <FONT face="宋体">
    <form id="Form1" method="post" runat="server">
    分类
    <asp:DropDownList id="mydown1" runat="server" Width="112px"></asp:DropDownList>
    &nbsp;&nbsp;名称
    <asp:DropDownList id="mydown2" runat="server" Width="168px"></asp:DropDownList>
    </form>
    </FONT>
    </body>/// <summary>
    /// 根据SQL语句返回数据集DataTable
    /// </summary>
    /// <param name="sql">要产生数据集的SQL语句</param>
    /// <returns>返回DataTable</returns>
    private DataTable Get_Dt(string sql)
    {
    //数据库连接串,本数据库为ACCESS数据库,当前在本目录的根目录下
    string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("data1.mdb") +";";
    this.conn = new OleDbConnection(connString);
    //打开数据库
    this.conn.Open();

    OleDbDataAdapter myAdp = new OleDbDataAdapter(sql, this.conn);
    DataTable myDt = new DataTable();
    try
    {
    //填充数据
    myAdp.Fill(myDt);
    //返回数据集
    return(myDt);
    }
    catch(OleDbException ex)
    {
    //显示错误信息
    throw ex;
    }
    finally
    {
    //关闭数据库连接
    this.conn.Close();
    }
    } /// <summary>
    /// 页面加载
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void Page_Load(object sender, System.EventArgs e)
    {
    //接收参数
    string sortid = this.Request.QueryString["sortid"];
    //判断参数是否为空(注意:空有两种形式,一种为null,一种为空)
    if(sortid + "a" != "a")
    {
    //如果有传递上述参数,则表示联动操作开始
    this.xmlBind(sortid);
    } //在页面初次加载的时候,绑定第一/二个下拉框,第二个下拉框为所有值
    //但实际上,第二个下拉框应显示空值,因为所有值可能也不少,最好只显示一个"请选择"字样
    if(!this.IsPostBack)
    {
    this.DownBind1();
    this.DownBind2();
    }
    } /// <summary>
    /// 返回第2个下拉框需要的值给xmlhttp
    /// </summary>
    /// <param name="sortid">传递的关键ID值</param>
    private void xmlBind(string sortid)
    {
    string mystr = "";
    string sql = "select typename,typeid from class_2 where sortid = " + sortid ;
    DataTable mytab = this.Get_Dt(sql); //将取到的值形成: ID|名称,ID|名称...这样的形式
    if(mytab.Rows.Count != 0)
    {
    for(int i=0;i<mytab.Rows.Count;i++)
    {
    mystr += "," + mytab.Rows[i]["typeid"].ToString() + "|" + mytab.Rows[i]["typename"].ToString();
    }
    mystr = mystr.Substring(1);
    } //输出页面
    this.Response.Write(mystr);
    this.Response.End();
    } /// <summary>
    /// 绑定第一个下拉框
    /// </summary>
    private void DownBind1()
    {
    //显示所有的主分类
    string sql = "select sortid,sort from class_1 order by sortid asc ";
    DataTable mytab = this.Get_Dt(sql); //绑定第一个下拉框
    this.mydown1.DataSource = mytab;
    this.mydown1.DataValueField = "sortid";
    this.mydown1.DataTextField = "sort";
    this.mydown1.DataBind(); //添加一个"请选择"行
    this.mydown1.Items.Insert(0,new ListItem("请选择分类","")); //为此下拉框添加一个默认选择项(此处默认为sortid = 1
    //做选项时,如果你添加的选定项而此控件中却没有此项,即会出错
    //如:this.mydown1.SelectedValue = "1";
    //所以此处以如下方式进行选定
    ListItem myItem = this.mydown1.Items.FindByValue("1");
    if(myItem != null)
    {
    myItem.Selected = true;
    } //为此下拉框添加选择事件,第一个参数是自己,第二个参数为要填充的下拉框的名称 
    this.mydown1.Attributes.Add("onchange","XmlPost(this,'" + this.mydown2.ClientID + "');");
    }

    /// <summary>
    /// 绑定第二个下拉框
    /// </summary>
    private void DownBind2()
    {
    //默认显示分类号为1的所有子类
       string sql = "select sortid,typename,typeid from class_2 where sortid =1" ;
       DataTable mytab = this.Get_Dt(sql); //绑牢控件
       this.mydown2.DataSource = mytab;
       this.mydown2.DataValueField = "typeid";
       this.mydown2.DataTextField = "typename";
       this.mydown2.DataBind(); //添加一个空的首行
    this.mydown2.Items.Insert(0,new ListItem("请选择名称",""));
    }