.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 对象、错误信息、(可选)捕获的异常对象。
以下都是调试时的重要参数:
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了。