ASP.NET之AJAX系列(二)

发布时间:2017-09-12 15:20:24
ASP.NET之AJAX系列(二)  在上一次的Ajax操作中,我们使用了ASP.NET原生控件实现,但是弊端很多,效率低下,而且有个文件上传的BUG:http://blog.csdn.net/zhaoqiliang527/article/details/4457961。

  于是我们寻求更好的实现方式,jQuery的Ajax方法配合ashx一般处理程序。jQuery的好处是兼容性强(背后有一个团队专门负责开发),易用(找个API几分钟就学会了),功能强大(对原生js进行了封装,直接调用方法即可实现很多功能)。Ashx一般处理程序则是MS自家的,从名字可以看出它是用来处理一些东西的(原谅我才疏学浅),而且它在执行的过程中不会对整个页面的生命周期重建,这就避免了控件树生成带来的开销问题。好了,下面我们来讲讲,这两者如何结合可以实现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实现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,站群软件,用于显示用户名是否被注册的消息。

  接下来我们就可以用到jQuery的ajax方法,在本例中,我们的需求是输入昵称后,文本框失去焦点,然后检测该昵称是否存在,于是就有了$("#txtId").blur方法。接下来失去焦点后,我们需要获取文本框的值,然后向ashx文件发起ajax请求:$.ajax({type: "post",url: "Handler1.ashx",data: { m: a },success: function (result) {var res =result.toString();$("#lblShow").html(res);}});

  注意这几个参数一定要写全,首先是提交的方式,我们这里用的是post的方式。然后是URL,就是我们的ashx文件的路径,接下来是参数,在这里我们传入文本框输入的昵称。最后有个success,它表示在请求成功后后续的操作,这里我们是将处理的结果用于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;

}

}

}

}

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:鄂州SEO http://ezhou.raoyu.net

上一篇:使用Stax解析XML
下一篇:python的装饰器