现在的位置: 首页 > 综合 > 正文

【转】Ajax异步调用ashx返回序列化类

2013年03月13日 ⁄ 综合 ⁄ 共 2654字 ⁄ 字号 评论关闭

GetEmployee.ashx 代码

<%@ WebHandler Language="C#" Class="AspNetAjaxOverview.GetEmployee" %>

using System;
using System.Web;
using System.Web.Script.Serialization;

namespace AspNetAjaxOverview
{
    public class GetEmployee : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            
            string firstName = context.Request.Params["firstName"];
            string lastName = context.Request.Params["lastName"];
            string title = context.Request.Params["title"];
            Employee employee = new Employee(firstName, lastName, title);
            
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            string jsonEmp = serializer.Serialize(employee);
            
            context.Response.Write(jsonEmp);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

    }
}

Employee.cs类代码

View Code

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace AspNetAjaxOverview
{
    /// <summary>
    /// Summary description for Employee
    /// </summary>
    public class Employee
    {
        private string _FirstName;
        private string _LastName;
        private string _Title;

        public Employee() { }

        public Employee(string firstName, string lastName, string title)
        {
            this._FirstName = firstName;
            this._LastName = lastName;
            this._Title = title;
        }

        public string FirstName
        {
            get
            {
                return this._FirstName;
            }
        }

        public string LastName
        {
            get
            {
                return this._LastName;
            }
        }

        public string Title
        {
            get
            {
                return this._Title;
            }
        }
    }
}

异表调用ashx代码

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Asynchronous Communication Layer Overview</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        
        <script language="javascript" type="text/javascript">
            function showEmployee(firstName, lastName, title)
            {
                var request = new Sys.Net.WebRequest();
                request.set_url('GetEmployee.ashx');
                request.set_httpVerb("POST");
                request.add_completed(onGetEmployeeComplete);
                
                var requestBody = String.format(
                    "firstName={0}&lastName={1}&title={2}",
                    encodeURIComponent(firstName),
                    encodeURIComponent(lastName),
                    encodeURIComponent(title));
                request.set_body(requestBody);
                
                request.invoke();
            }
            
            function onGetEmployeeComplete(response)
            {
                
            
                if (response.get_responseAvailable())
                {
                    var employee = response.get_object();
                    alert(String.format(
                        "Hello I'm {0} {1}, my title is '{2}'",
                        employee.FirstName,
                        employee.LastName,
                        employee.Title));
                }
            }
        </script>
        
        <input type="button" value="Bill Gates"
            onclick="showEmployee('Bill', 'Gates', 'Chair man')" />
        <input type="button" value="Steve Ballmer"
            onclick="showEmployee('Steve', 'Ballmer', 'CEO')" />
    </form>
</body>
</html>

 

抱歉!评论已关闭.