在ASP.NET同样可以与其它编程语言一样,利用前台的Ajax技术,只是需要注意的是,后台的处理程序不再是一个aspx页面中的Page_Load,而且ASP.NET独有的“一般处理程序”.ashx,下面用一个简单的例子来说明这个问题。

如下图,一个简单到,完全可以用前台脚本完成的加法程序。这里只是为了说明问题。

首先,这个解决方案的文件结构如下图:

你首先要右击解决方案的方式,通过添加“现有项”的方式,将一个高版本的jQuery.js文件添加到你的解决方案,直接复制这个文件复制到解决方案的文件夹是没有用的,亲测。

之后,要添加一个“新建项”,这个新建项是一般处理程序.ashx,而不是一般的Web窗体.aspx

这里,将一般处理程序,命名为Calculate.ashx,代码如下,其展示给前台的东西是通过context.Response.Write完成的,用于将处理内容打印到前台。

这里首先用context.Request.Form从前台接受两个Post传递过来的参数。如果不为空,则将它们相加的结果打印到前台。

using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
     
    namespace Ajax
    {
        /// <summary>
        /// Handler1 的摘要说明
        /// </summary>
        public class Handler1 : IHttpHandler
        {
     
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";//用于设置编码
                string num1 = context.Request.Form["num1"];//如果是get方式应该用context.Request.QueryString
                string num2 = context.Request.Form["num2"];
                if (!(string.IsNullOrEmpty(num1) || string.IsNullOrEmpty(num2)))
                {
                    context.Response.Write(int.Parse(num1) + int.Parse(num2));
                }
            }
     
            public bool IsReusable//用于线程安全
            {
                get
                {
                    return false;
                }
            }
        }
    }

之后的Default.aspx完全是前台HTML+javascript的内容,从两个文本框的获取参数,将其传到Calculate.ashx里面,再将结果打印到id为result的span节点里面。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Ajax.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 id="Head1" runat="server">
        <title>Ajax</title>
        <script type="text/javascript" src="jquery-1.8.3.js"></script>
    </head>
    <body>
        <input type="text" id="num1" />+<input type="text" id="num2" /><button onclick="calculate()">=</button><span id="result"></span>
    </body>
    <script type="text/javascript">
        function calculate() {
            var num1 = $("#num1").val();
            var num2 = $("#num2").val();
            if (isNaN(num1) || isNaN(num2)) {
                alert("你输入的不是数!");
            }
            else {
                $.ajax({
                    type: 'post',
                    url: 'Calculate.ashx',
                    dataType: "html",
                    data: {
                        num1: num1,
                        num2: num2
                    },
                    success: function (data) {
                        $("#result").html(data);
                    },
                    error: function () {
                        alert("出错了!请稍候再试!");
                    }
                });
            }
        }
    </script>
    </html>

可以看到ASP.NET,利用jQuery与.ashx完成简单的Ajax与其它编程语言几乎没有区别,

唯一需要的是,必须将Ajax的后台处理代码写在.ashx文件,而不是.aspx中的Page_Load方法,如果.aspx没有被访问,仅传过参数进去,是不会触发Page_Load方法的。

利用jQuery与.ashx完成简单的Ajax的更多相关文章

  1. 利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法

    利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先来个简单的实例热热身吧. 1.无参数的方法调用 asp.net code: view plaincopy to clip ...

  2. 利用HTML5与jQuery技术创建一个简单的自动表单完成

    来源:GBin1.com 在线演示   在线下载 谷歌快速搜索自带大量自动完成插件——库中甚至还有一个附带的jQuery UI共享选项.然而今天我要寻找一个替代的解决方案.由DevBridge开发的j ...

  3. 160620、利用 jQuery UI 和 Ajax 创建可定制的 Web 界面

    如今,网站比以往更具可定制性,允许用户更改其空间,根据自己的喜好对其进行个性化.个性化的主页或仪表板页面(例如 iGoogle.MyYahoo! 和 MyAOL)日渐普及,大多数 Web 应用程序内甚 ...

  4. 利用JQUERY实现多个AJAX请求等待

    利用JQUERY实现多个AJAX请求等待 li {list-style-type:decimal;}.wiz-editor-body ol.wiz-list-level2 > li {list- ...

  5. jQuery简单的Ajax调用示例

    jQuery确实方便,下面做个简单的Ajax调用: 建立一个简单的html文件: <!DOCTYPE HTML> <html> <head> <script ...

  6. 利用jquery+iframe做一个ajax上传效果

    以下是自学it网--中级班上课笔记 网址:www.zixue.it html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...

  7. 利用jquery对ajax操作,详解原理(附代码)

    1. jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法: $(selecto ...

  8. 利用JQuery直接调用asp.net后台的简单方法

    利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. [WebMethod]   命名空间 1.无参数的方法调用, 注意:1.方法一定要静态方法,而且要有[WebMethod] ...

  9. 【javascript】利用jquery ajaxPrefilter防止ajax重复提交

    利用jquery ajaxPrefilter中断请求 var pendingRequests = {}; $.ajaxPrefilter(function( options, originalOpti ...

随机推荐

  1. java 泛型实现原理

    泛型思想最早在C++语言的模板(Templates)中产生,Java后来也借用了这种思想.虽然思想一致,但是他们存在着本质性的不同. C++中的模板是真正意义上的泛型,在编译时就将不同模板类型参数编译 ...

  2. ML: 降维算法-LDA

    判别分析(discriminant analysis)是一种分类技术.它通过一个已知类别的“训练样本”来建立判别准则,并通过预测变量来为未知类别的数据进行分类.判别分析的方法大体上有三类,即Fishe ...

  3. 【转】C# XML序列化去掉XML默认的命名空间及声明头

    http://blog.csdn.net/aoshilang2249/article/details/44860155 重点: XmlSerializerNamespaces namespaces = ...

  4. VS2010 如何自动生成UML图

    项目名---右键----查看类图

  5. sql中的STRFTIME

    STRFTIME返回的是一个字符串 STRFTIME('%w',myTime) in ('1','2','4','5') 可以正确执行,而 STRFTIME('%w',myTime) in (1,2, ...

  6. 微信h5支付demo微信H5支付demo非微信浏览器支付demo微信wap支付

    服务项目 新手技术咨询 企业技术咨询 定制开发 服务说明 QQ有问必答 QQ.微信.电话 微信开发.php开发,网站开发,系统定制,小程序开发 价格说明 200元/月 1000/月 商议       ...

  7. 关于linux中的system函数

    Linux下使用system()函数一定要谨慎 https://blog.csdn.net/senen_wakk/article/details/51496322 system()正确应用 https ...

  8. what's the difference between grouping and facet in lucene 3.5

    I  found in lucene 3.5 contrib folder two plugins: one is grouping, the other is facet. In my option ...

  9. windows迁移linux问题集锦

    1)‘_wcsicmp’在此作用域中尚未声明 #ifdef WIN32#define _tcsicmp        _wcsicmp#else#define _tcsicmp        wcsc ...

  10. tomcat操作

    一.启动 D:\tomcat8.5.9\bin\startup   或者  D:\tomcat8.5.9\bin\catalina start 关闭tomcat: D:\tomcat8.5.9\bin ...