为了通过ajax异步获取数据,我通过使用jquery的$(function{})方法,在页面加载时发送ajax请求,获取相关的数据。但是遇到了一个问题,当我发送的ajax请求需要根据传过来的URL参数来获取数据时,这就存在一个问题,怎样将后台获取的参数传递给前台js的问题。由于页面是先加载jquery的ajax请求页面,再执行后台代码的Page_Load方法,所以必须在获取参数之后再调用ajax方法。可以通过在后台代码中注册前台js代码,控制它的执行顺序。
后台C#代码如下:
1 <SPAN style= "FONT-SIZE: 14px" > private string categoryId = "0" ; 2 protected void Page_Load( object sender, EventArgs e) 3 { 4 if (!String.IsNullOrEmpty(Request.QueryString[ "categoryId" ])) 5 { 6 categoryId = Request.QueryString[ "categoryId" ]; 7 } 8 Page.ClientScript.RegisterStartupScript( this .GetType(), "" , "load(" +categoryId+ ")" , true ); 9 } 10 11 </SPAN>
前台js代码如下:
1 <SPAN style= "FONT-SIZE: 14px" >function load(categoryId) { 2 $.ajax({ 3 type: "get" , 4 url: '<%=ResolveUrl("~/Handler/Test.ashx") %>' , 5 dataType: "json" , 6 data: "categoryId=" +categoryId, 7 success: function (result) { 8 $.each(result, function (index, data) { 9 }); 10 } 11 }); 12 }; 13 </SPAN>