ajax问题,无法获取数据
我新建了一个查询页(Select.aspx)和一个获取查询结果的页(GetSelectData.aspx)
下面是select.aspx的js代码:
var xmlhttp;function GetData(){ var time=document.getElementById("<%=TimeTB.ClientID%>").value; var scity=document.getElementById("<%=SCityTB.ClientID%>").value; var dcity=document.getElementById("<%=DCityBT.ClientID%>").value; if(window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器 } else if(window.XMLHttpRequest)//非IE浏览器 { xmlhttp=new XMLHttpRequest(); } else { alert("创建XMLHttpRequest对象失败!"); return; } xmlhttp.Open("GET","GetSelectData.aspx?stime="+time+"&scity="+scity+"&dcity="+dcity,false); xmlhttp.onreadystatechange=handlfunc; xmlhttp.send(null);}function handlfunc()//获取数据后处理函数{ if(xmlhttp.readystate==4) { if(xmlhttp.status==200) { var data=bytes2BSTR(xmlhttp.ResponseBody); var start=data.indexOf("查找结果"); var end=data.indexOf("结束"); var finaldata=data.substring(start+8,end); document.write(xmlhttp.ResponseText); //document.getElementById('data_div').innerHTML=data; //document.getElementById("data_div").innerHTML=xmlhttp.ResponseText; } } protected void Page_Load(object sender, EventArgs e) { string time = "2009-08-05",scity="南昌",dcity="景德镇"; if (!IsPostBack) { try { time = Request.QueryString["stime"].ToString(); scity = Request.QueryString["scity"].ToString(); dcity = Request.QueryString["dcity"].ToString(); } catch (Exception ex) { Response.Redirect("ErrorPage.htm"); } LoadData(time, scity, dcity); } } public void LoadData(string time,string scity,string dcity) { SqlParameter[] sp ={DBAccess.MakeParam("@stime",SqlDbType.VarChar,time), DBAccess.MakeParam("@scity",SqlDbType.VarChar,scity), DBAccess.MakeParam("@spoint",SqlDbType.VarChar,""), DBAccess.MakeParam("@dcity",SqlDbType.VarChar,dcity), DBAccess.MakeParam("@dpoint",SqlDbType.VarChar,"") }; int flag = 0; DataView dv = DBAccess.GetData("qiche_SelectBusInfo", sp, out flag).Tables[0].DefaultView; if (flag == 11) { Response.Redirect("ErrorPage.htm"); } this.DataList1.DataSource = dv; this.DataList1.DataBind(); } protected override void Render(HtmlTextWriter writer) { HtmlTextWriter gridWriter = new HtmlTextWriter(new System.IO.StringWriter()); DataList1.RenderControl(gridWriter); //给ajax返回数据 Response.Write(gridWriter.InnerWriter.ToString()); } public override void VerifyRenderingInServerForm(System.Web.UI.Control control) { }
------解决方案--------------------
//在方法最後加 StringBuilder sb = new StringBuilder(); StringWriter stWriter = new StringWriter(sb); HtmlTextWriter htmlWriter = new HtmlTextWriter(stWriter); DataList1.RenderControl(htmlWriter); Response.wirte(sb.ToString());//重寫VerifyRenderingInServerFormpublic override void VerifyRenderingInServerForm(Control control){}
[解决办法]
xmlhttp.Open("GET","GetSelectData.aspx?stime="+escape(time)+"&scity="+escape(scity)+"&dcity="+escape(dcity)+"&date="+new Date(),false);
[解决办法]
GetSelectData.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetSelectData.aspx.cs" Inherits="csdn_GetSelectData" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div> 查找结果: <asp:DataList id="DataList1" runat="server" FooterStyle-BorderStyle="None" ItemStyle-BorderStyle="None" BorderStyle="None" CellPadding="0" CellSpacing="0" BorderWidth="0" Width="100%"> <HeaderTemplate> <table width="100%" cellpadding="0" cellspacing="0"> <tr style=" background-color:Fuchsia"> <td> 发车城市-地点 </td> <td> 目的城市-地点 </td> <td> 发车时间 </td> <td> 剩余可售座位数 </td> <td> 散客价(元/人) </td> <td> 团体价(元/人) </td> <td> 成团人数 </td> <td> </td> </tr> </HeaderTemplate> <ItemTemplate> <tr onmouseover=" ChangTrBg(this,0)" onmouseout="ChangTrBg(this,1)"> <td> <%# DataBinder.Eval(Container.DataItem,"StartCity")+"-"+DataBinder.Eval(Container.DataItem,"StartPoint") %> </td> <td> <%# DataBinder.Eval(Container.DataItem,"DestionCity")+"-"+DataBinder.Eval(Container.DataItem,"DestionPoint") %> </td> <td> <%# DataBinder.Eval(Container.DataItem, "StartTime") == "" ? DataBinder.Eval(Container.DataItem, "UnSureTime") == "" ? DataBinder.Eval(Container.DataItem, "TimeDesp") : DataBinder.Eval(Container.DataItem, "UnSureTime") : DataBinder.Eval(Container.DataItem, "StartTime")%> </td> <td> <%# DataBinder.Eval(Container.DataItem,"RestNumber") %> </td> <td> <%# DataBinder.Eval(Container.DataItem,"SiglePrice")%> </td> <td> <%# DataBinder.Eval(Container.DataItem,"TeamPrice") %> </td> <td> <%# DataBinder.Eval(Container.DataItem,"TeamNumber") %> </td> <td> <a href='DetailCarInfo.aspx?id=<%#DataBinder.Eval(Container.DataItem,"OrderId") %>'>更多>></a> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> <FooterStyle BorderStyle="None" BorderWidth="0px" /> <ItemStyle BorderWidth="0px" /> <HeaderStyle BorderStyle="None" BorderWidth="0px" /> </asp:DataList> 结束 </div> </form></body></html>