Jquery Ajax处理,服务端三种页面aspx,ashx,asmx的比较
常规的Jquery Ajax 验证登录,主要有3种服务端页面相应 ,也就是 aspx,ashx,asmx即webserivice 。
下面分别用3种方式来(aspx,ashx,asmx)做服务端来处理 Jquery Ajax 传过来的用户名和密码验证!
例: Login.html 请求用户名和密码验证!
<head>
<script type="text/javascript"> $(document).ready(function() {
$("#go").bind('click', function() { var name = $.trim($("#txtName").val()); // $.trim()去除空格
var pwd = $.trim($("#txtPwd").val()); if (name == "") { $("#nameResult").html("<font color='red'>用户名不能为空</font>"); }
else { $("#nameResult").html(""); }
if (pwd == "") { $("#pwdResult").html("<font color='red'>密码不能为空</font>"); }
else { $("#pwdResult").html(""); } if (name != "" && pwd != "") {
//post 请求
$.ajax({
type: "post",
//服务器相应ajax请求,可以有 aspx页面,ashx页面 url: "AjaxLogin.aspx","AjaxLoginAshx.ashx",
url: "AjaxLoginAsmx.asmx/login", //调用 webserivice 下的login方法
cache: false,
data: "name=a&&pwd=b",
//aspx页面为服务器相应
success: function(html) { location.href = "default.aspx"; $("#go").attr("disabled", false) }, error: function(html) { alert("登录失败"); $("#go").attr("disabled", false) } });
} });
}); </script>
</head> <body>
<form id="form1" runat="server">
<div>
用户名<asp:TextBox ID="txtName" runat="server" ></asp:TextBox><span id="nameResult"></span>
<br />
密码<asp:TextBox ID="txtPwd" runat="server"></asp:TextBox><span id="pwdResult"></span>
<br />
<br /> <input type="button" id="go" value="登录" />
<asp:Button ID="go1" runat="server" Text="服务器控件登录" onclick="go_Click" />
</div>
</form>
</body>
1.服务端为 AjaxLogin.aspx 页面
首先修改 $.ajax 的 Url:"AjaxLogin.aspx"
protected void Page_Load(object sender, EventArgs e)
{ if (Request.Form["name"] != null && Request.Form["pwd"] != null)
{
if (Request.Form["name"].ToString().Trim() != "" && Request.Form["pwd"].ToString() != "")
{ string name = Request.Form["name"].ToString().Trim();
string pwd = Request.Form["pwd"].ToString();
Response.Cookies.Clear(); Response.Cookies.Add(new HttpCookie("name", name)); //添加cookie
Response.Cookies.Add(new HttpCookie("pwd",pwd));//添加密码 Response.Write("你已经成功登录"); } } }
2. 服务端为 AjaxLoginAshx.ashx 页面 (一般处理程序)
首先修改 $.ajax 的 Url:"AjaxLoginAshx.ashx"; 另:ashx以context.Response.Write 返回内容
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class AjaxLoginAshx : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
//context.Response.ContentType = "text/plain";
//context.Response.Write("Hello World");
if (context.Request.Form["name"] != null && context.Request.Form["pwd"] != null)
{
if (context.Request.Form["name"].ToString().Trim() != "" && context.Request.Form["pwd"].ToString() != "")
{ string name = context.Request.Form["name"].ToString().Trim();
string pwd = context.Request.Form["pwd"].ToString();
context.Response.Cookies.Clear(); context.Response.Cookies.Add(new HttpCookie("name", name));
context.Response.Cookies.Add(new HttpCookie("pwd", pwd)); context.Response.Write("你已经成功登录"); }
else
{ context.Response.Write("没成功登录1");
} }
else
{ context.Response.Write("没成功登录2");
} } public bool IsReusable
{
get
{
return false;
}
}
3. 服务端为 AjaxLoginAsmx.asmx页面 (SOAP方式HTTP访问,用XML返回)
首先修改 $.ajax 的 Url:"AjaxLoginAsmx.asmx/login"; 注意: / 后面是方法名
另asmx页面以return 返回内容,response.cookies.add添加cookie
/// <summary>
/// AjaxLoginAsmx 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class AjaxLoginAsmx : System.Web.Services.WebService
{ [WebMethod]
public string HelloWorld()
{
return "Hello World";
} [WebMethod] public string login()
{ if (HttpContext.Current.Request.Form["name"] != null && HttpContext.Current.Request.Form["pwd"] != null)
{
if (HttpContext.Current.Request.Form["name"].ToString().Trim() != "" && HttpContext.Current.Request.Form["pwd"].ToString() != "")
{ string name = HttpContext.Current.Request.Form["name"].ToString().Trim();
string pwd = HttpContext.Current.Request.Form["pwd"].ToString(); //HttpContext.Current.Response.Cookies.Add(new HttpCookie("name", name));
//HttpContext.Current.Response.Cookies.Add(new HttpCookie("pwd", pwd)); //HttpContext.Current.Response.Write("你已经成功登录");
HttpContext.Current.Response.Cookies.Add(new HttpCookie("a", ""));
return "Hello World"; }
else
{
return "error1";
} } else
{
return "error2";
} }
Jquery Ajax处理,服务端三种页面aspx,ashx,asmx的比较的更多相关文章
- Jquery Ajax向服务端传递数组参数值
在使用MVC时,向服务器端发送POST请求时有时需要传递数组作为参数值 下面使用例子说明,首先看一下Action [HttpPost] public ActionResult Test(List< ...
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- Ajax轮询——“定时的通过Ajax查询服务端”
Ajax轮询——"定时的通过Ajax查询服务端". 概念: 轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 百闻 ...
- jQuery中detach&&remove&&empty三种方法的区别
jQuery中empty&&remove&&detach三种方法的区别 empty():移除指定元素内部的所有内容,但不包括它本身 remove():移除指定元素内部的 ...
- jquery取消事件冒泡的三种方法展示
jquery取消事件冒泡的三种方法展示 html代码 <!doctype html> <html> <head> <meta charset="ut ...
- jquery动态加载js三种方法实例
这里为你提供了三种动态加载js的jquery实例代码哦,由于jquery是为用户提供方便的,所以利用jquery动态加载文件只要一句话$.getScript(\"test.js\" ...
- 云计算服务的三种类型(SaaS、PaaS、IaaS)
云计算可以帮助企业降低IT方面的成本和复杂性,并获得他们蓬勃发展所需的灵活性与敏捷性.但是,规划出通往云的明确路径并非易事.毕竟用户需要看透与云相关的市场大肆宣传,然后理解并分析不同种类的云计算模式的 ...
- Ajax打开三种页面的请求
xmlhttprequest对象可以打开两种方式的页面请求 1,.asmx格式的webservice页面. 2,.aspx格式的web窗体 其中web窗体可以是调用一新建的web窗体,同时调用和被调用 ...
- aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到
aJax提交与普通提交是两种迥异的提交方式,这两种提交方式决定了客户端与服务端交互时存储.传输数据的方式也不同. aJax提交,客户端的请求数据存储在data中,服务端用request.getPara ...
随机推荐
- Python之路【第九篇】堡垒机基础&数据库操作
复习paramiko模块 Python的paramiko模块,是基于SSH用于连接远程服务器并执行相关操作. SSHClient #!/usr/bin/env python #-*- coding:u ...
- struts2基础篇(1)
一.Struts2简介Struts2以WebWork优秀的设计思想为核心,吸收了Struts1的部分优点,建立了一个基于WebWork和Struts1的MVC框架. 二.搭建Struts2开发环境2. ...
- Python开发【第十七篇】:MySQL(一)
一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Serve ...
- 浅谈JavaScript中的事件
引言 Html页面与JavaScript之间的交互是通过事件来完成的.事件,就是文档或者浏览器窗口中发生的一些特定的交互瞬间.可以使用侦听器(处理程序)来预订事件,以便事件发生时执行相应的代码.这在传 ...
- VFP笔记
1.计算圆的面积的计算器 650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/12/43/wKiom1MAsFzxm ...
- java 使用BeanUtils.copyProperties(Object source,Object target) 复制字段值
BeanUtils.copyProperties(person, wsPerson);把person的字段值,复制给wsPerson // 只复制两个实体中,字段名称一样的 很有用的一个功能...
- android控件库(1)-带删除功能的EditText
DJEditText.java /** * Created by xp.chen on 2016/11/25. */ public class DJEditText extends AppCompat ...
- matlab 聚类
目前已知matlab的聚类方法有三种: 一.利用 clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法: 二.层次聚类,该方法较为灵活,需要进行细节了 ...
- 【CISP笔记】数据库及应用安全
数据库安全特性检查工具美国应用安全公司的App Detective英国下一代软件公司的NGS SQuirrel 常见应用安全威胁 网络层面拒绝服务.电子欺骗.嗅探.……系统层面Web服务漏洞.配置错误 ...
- [译]我是怎么构建Node.js程序的
原文: http://blog.ragingflame.co.za/2015/4/1/how-i-build-nodejs-applications "保持简单, 保持模块化." ...