default.aspx页面。实现加法运算<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>AJAX之加法运算示例</title>
    <script type="text/javascript">
        var xmlHttp;
        function createXMLHttpRequest()
        {
            if(window.ActiveXObject)
            {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if(window.XMLHttpRequest)
            {
                xmlHttp = new XMLHttpRequest();
            }
        }
        function addNumber()
        {
            createXMLHttpRequest();
            var url= "Handler.ashx?Num1="+document.getElementById("num1").value+"&Num2="+document.getElementById("num2").value;
            xmlHttp.open("GET",url,true);
            xmlHttp.onreadystatechange=showResult;
            xmlHttp.send(null);
        }
        function showResult()
        {
            if(xmlHttp.readyState==4)
            {
                if(xmlHttp.status==200)
                {
                    document.getElementById("result").value=xmlHttp.responseText;问题1、这个xmlHttp.responseText是怎么样与hander.ashx里面ProcessRequest方法里面的result关联起来的?                }
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div style="text-align: center">
        <input id="num1" style="width: 99px" type="text" value="0" onkeyup="addNumber();" />+<input id="num2" style="width: 95px"
            type="text" value="0" onkeyup="addNumber();" />=<input id="result" style="width: 99px" type="text" /></div>
    </form>
</body>
</html><%@ WebHandler Language="C#" Class="Handler" %>using System;
using System.Web;public class Handler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {问题2、这个方法在 default.aspx页面的那里调用,我似乎没有找到再那里调用了这个方法?        
         context.Response.ContentType = "text/plain";
        int result = Convert.ToInt32(context.Request.QueryString["Num1"]) + Convert.ToInt32(context.Request.QueryString["Num2"]);
        context.Response.Write(result);
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }}

解决方案 »

  1.   

    ashx是用于写web handler的,一般用来处理生成动态图片、生成动态文本等不需要回传处理的任务
    在ProcessRequest 中根据Request对象中的参数信息,确定请求的服务器端方法名称和参数,然后进行调用,并返回结果 
    http://msdn.microsoft.com/zh-cn/library/system.web.ihttphandler.processrequest(VS.80).aspx
      

  2.   

    hander.ashx输出一个字符串结果,前台xmlHttp.responseText获取这个字符串。ProcessRequest 是固定的。你可以把它看成类似于aspx的page_load。
      

  3.   

    它继承了IHttpHandler 接口,默认调用ProcessRequest 方法
      

  4.   

    hander.ashx输出一个字符串结果一定是输出一个字符串结果,她又没有返回值。怎么是xmlHttp.responseText来接受呢??
      

  5.   


    这句输出context.Response.Write(result);用XMLHttpRequest可以获取到result
      

  6.   

    responseText 也是固定写法。从字面意思就了解了嘛,即:响应文档反馈回来的字符串。xmlHTTP调用或运行一个后台文档或程序,后台文档或程序处理或不处理之后,输出一个字符串。xmlHTTP通过responseText获取这个字符串结果。