您的位置:首页 > 其它

初试.net使用ajax调用后台方法

2013-06-05 10:34 295 查看
方法一:

第一步,建立一个.aspx文件

在查看其源代码里写:即.aspx.cs,主要是使用using System.Web.Services;

关键处:[WebMethod]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

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

}
[WebMethod]
public static string HandleEvent01()
{
//code...
return "YOUR DATA";
}
}


在.aspx文件里写:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html >

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$.ajax({
type: "POST",
contentType: "application/json",
url: "Default2.aspx/HandleEvent01", //调用WebService的地址和方法名称组合 ---- WsURL/方法名
dataType: 'json',                   //WebService 返回Json类型 或者 Json/string
success: function(re) {
$('#re_method04').html(re.d);
}
});

});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="re_method04">

</div>
</form>
</body>
</html>


方法二:

建立一个Handler.ashx。类作为后台处理请求:

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;

public class Handler : IHttpHandler {

public void ProcessRequest (HttpContext context) {
Json j = new Json();
j.Msg = "试验成功了,哈哈哈哈!";
context.Response.Write(MyJsonConvert.SerializeObjectEx(j));
}

public bool IsReusable {
get {
return false;
}
}

}
前台访问:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html >

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$.ajax({
type: "POST",
contentType: "application/json",
url: "Handler.ashx/ProcessRequest", //调用WebService的地址和方法名称组合 ---- WsURL/方法名
dataType: 'json',                   //WebService 返回Json类型 或者 Json/string
success: function (re) {
console.info(re);
$('#re_method04').html(re.Msg);
}
});

});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="re_method04">

</div>
</form>
</body>
</html>


序列化JSON使用的是Newtonsoft:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;

/// <summary>
///MyJsonConvert
///     序列化对象为JSON
/// </summary>
public class MyJsonConvert
{
public MyJsonConvert()
{

}
public static  string SerializeObjectEx(object value)
{
Newtonsoft.Json.Converters.IsoDateTimeConverter timeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter();  //这里使用自定义日期格式,默认是ISO8601格式

timeConverter.DateTimeFormat = "yyyy-MM-dd"; //设置时间格式
Newtonsoft.Json.Converters.StringEnumConverter enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter(); //枚举值转换成字符串名字
JsonSerializerSettings JsonSetting = new JsonSerializerSettings();
JsonSetting.Converters.Add(timeConverter);
JsonSetting.Converters.Add(enumConverter);
JsonConvert.SerializeObject(value, JsonSetting);
return JsonConvert.SerializeObject(value,JsonSetting);
}

}


待序列化的类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
///Json
///     返回json数据
/// </summary>
public class Json
{
private string msg;

public string Msg
{
get { return msg; }
set { msg = value; }
}

public Json()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
}


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: