.net利用ajax返回后台数据

时间:2022-11-15 07:27:41

  .net网站开发中有时候需要前台获取后台的数据,这里我们讨论ajax技术。

  网上有很多方法都是引用ajax.dll,然后在C#中注册即可在js中引用。

  而IIS 7.0以上的版本需要在<system.webServer>的<handlers>节点下额外配置,详情见 http://www.jb51.net/article/40054.htm,否则可能会出错。

  我们也可以通过以下方法自己写ajax,项目中引用了jquery。

      

  js前端代码(范例):

$(function(){
        $.ajax({
            type: "post",
            url: "Default.aspx/PipeData",
            contentType: "application/json;charset=utf-8",
            dataType: "json",
            success: function (res) {
                var j=res.d;
            },
            error: function (xmlReq, err, c) {
                alert("error!!");
            }
        });
});
    

url:Default.aspx 即为对应的页面,PipeData为该页面对应C#后台中的一个函数。

dataType:这里我们返回的数据格式为json。

success:返回的数据为res.d,这是一个json对象。

error:请求失败时调用此函数。有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。

以下都是调试时的重要参数:

.net利用ajax返回后台数据

 

  C#后台代码(范例):

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    //读取文件数据
    [WebMethod]
    public static string PipeData()
    {
        List<Lines> linesobj = new List<Lines>();
        ArrayList lines = new ArrayList();
        StreamReader sr = new StreamReader("C:\\mm.txt", Encoding.Default);
        string temp;
        while ((temp = sr.ReadLine()) != null)
        {
            lines.Add(temp);
        }
        sr.Close();

        for (int i = 0; i < lines.Count; i++)
        {
            string[] str = System.Text.RegularExpressions.Regex.Split(lines[i].ToString(), @"\s{1,}"); //str为当前这一行所有数据
            linesobj.Add(new Lines(){X1=str[6], X2=str[8], Y1=str[7], Y2=str[9], Z1=(Convert.ToDouble(str[0]) - Convert.ToDouble(str[2])).ToString(), Z2=(Convert.ToDouble(str[1]) - Convert.ToDouble(str[3])).ToString(), diameter=str[4], material=str[5]}); 
            
        }
        JavaScriptSerializer jss = new JavaScriptSerializer();
        string myJson = jss.Serialize(linesobj);
        return myJson;
    }


    public class Lines
    {
        public string X1 { get; set; }
        public string X2 { get; set; }
        public string Y1 { get; set; }
        public string Y2 { get; set; }
        public string Z1 { get; set; }
        public string Z2 { get; set; }
        public string diameter { get; set; }
        public string material { get; set; }
    }

}

 

  后台在自己的代码中using System.Web.Services;并在使用的方法前面加上[WebMethod]。

  

  此时js中的j变量就可以获取到后台返回的变量myJson了。