国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

ASP.NET之Ajax系列(二)

2019-11-17 01:38:12
字體:
供稿:網(wǎng)友
asp.net之Ajax系列(二)

  在上一次的Ajax操作中,我們使用了ASP.NET原生控件實現(xiàn),但是弊端很多,效率低下,而且有個文件上傳的BUG:http://blog.csdn.net/zhaoqiliang527/article/details/4457961。

  于是我們尋求更好的實現(xiàn)方式,jQuery的Ajax方法配合ashx一般處理程序。jQuery的好處是兼容性強(背后有一個團隊專門負責(zé)開發(fā)),易用(找個API幾分鐘就學(xué)會了),功能強大(對原生js進行了封裝,直接調(diào)用方法即可實現(xiàn)很多功能)。Ashx一般處理程序則是MS自家的,從名字可以看出它是用來處理一些東西的(原諒我才疏學(xué)淺),而且它在執(zhí)行的過程中不會對整個頁面的生命周期重建,這就避免了控件樹生成帶來的開銷問題。好了,下面我們來講講,這兩者如何結(jié)合可以實現(xiàn)ajax,首先我們建立一個頁面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ashxAjax.aspx.cs" Inherits="Webapplication1.ashxAjax" %><!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>jQuery實現(xiàn)Ajax</title>    <script type="text/javascript" src="Javascript/jquery-11.js"></script>    <script type="text/javascript">        $(function () {            $("#txtId").blur(function () {                var a = $("#txtId").val();                $.ajax({                    type: "post",                    url: "Handler1.ashx",                    data: { m: a },                    success: function (result) {                        var res = result.toString();                        $("#lblShow").html(res);                    }                });            });        });    </script></head><body>    <form id="form1" runat="server">    <div>        昵稱:<asp:TextBox ID="txtId" runat="server"></asp:TextBox><asp:Label ID="lblShow" runat="server"            ForeColor="Red"></asp:Label><br />    </div>    </form></body></html>

  在這里面我在頁面頭部引用了最新的jQuery-1.11(好吧那個js文件名字沒取好),然后在頁面放入一個文本框用于輸入昵稱,同時在后面有個Label,用于顯示用戶名是否被注冊的消息。

  接下來我們就可以用到j(luò)Query的ajax方法,在本例中,我們的需求是輸入昵稱后,文本框失去焦點,然后檢測該昵稱是否存在,于是就有了$("#txtId").blur方法。接下來失去焦點后,我們需要獲取文本框的值,然后向ashx文件發(fā)起ajax請求:$.ajax({type: "post",url: "Handler1.ashx",data: { m: a },success: function (result) {var res =result.toString();$("#lblShow").html(res);}});

  注意這幾個參數(shù)一定要寫全,首先是提交的方式,我們這里用的是post的方式。然后是URL,就是我們的ashx文件的路徑,接下來是參數(shù),在這里我們傳入文本框輸入的昵稱。最后有個success,它表示在請求成功后后續(xù)的操作,這里我們是將處理的結(jié)果用于Label文字的顯示。

  在前端寫好js后,我們來看看我們的ashx文件中的代碼:

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace WebApplication1{    /// <summary>    /// Handler1 的摘要說明    /// </summary>    public class Handler1 : IHttpHandler    {        public void PRocessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";            string Name = context.Request.Params["m"].ToString();            if (userHelper.CheckName(Name) == false)            {                context.Response.Write("該昵稱已被注冊!");            }            else             {                context.Response.Write("恭喜,此昵稱可以使用!");            }        }        public bool IsReusable        {            get            {                return false;            }        }    }}

  在這個ashx文件中,我們先將傳進來的名稱作為參數(shù),去調(diào)用我們上一節(jié)的userHelper類檢測昵稱是否存在,然后在返回值后再返回不同的文字,用于顯示,我們來一起看看效果:

  此時發(fā)現(xiàn)失去焦點后,代碼已經(jīng)進入斷點,這表明我們的ajax請求已經(jīng)成功!

  而根據(jù)數(shù)據(jù)庫所示:豆豆這個昵稱是存在的,因此我們會在userHelper類中進行處理,并返回false之后,提示用戶該昵稱已經(jīng)存在:

  我們再來看看輸入一個不存在的:最終的結(jié)果是提示用戶可以使用。

這樣表明我們已經(jīng)實現(xiàn)了jQuery+ashx一般處理程序的方式實現(xiàn)了無頁面刷新檢測用戶名的ajax方式。

  目前在大多數(shù)企業(yè)開發(fā)中,這種ajax實現(xiàn)方式用的較為廣泛,它不僅操作容易,而且是輕量級實現(xiàn),ashx可以返回json字符串,也可以返回xml文件,極為靈活,所以推薦大家都使用這種方式去實現(xiàn)ajax。但是這樣的ajax依然不是最原始的實現(xiàn)方式,因為ajax的本意是“Asynchronous Javascript + XML”(異步JavaScript和XML),下次我們一起來探索最后一種用原生的javascript去實現(xiàn)ajax功能的方式,敬請期待!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 昭平县| 宁河县| 余姚市| 钟祥市| 阿尔山市| 宜阳县| 安阳县| 黔东| 武乡县| 鄯善县| 竹山县| 正镶白旗| 威海市| 天全县| 庐江县| 和田县| 义马市| 金湖县| 确山县| 砚山县| 华阴市| 绥宁县| 军事| 高清| 沙田区| 自贡市| 岱山县| 兴和县| 峨边| 丽江市| 洪雅县| 固原市| 上高县| 门头沟区| 甘肃省| 西城区| 东阳市| 淮滨县| 西平县| 和顺县| 杭州市|