原文:Jquery Ajax调用aspx页面方法

在asp.net webform开发中,用jQuery ajax传值一般有几种玩法

1)普通玩法:通过一般处理程序ashx进行处理;

2)高级玩法:通过aspx.cs中的静态方法+WebMethod进行处理;

3)文艺玩法:通过WCF进行处理。

第一种和第三种方法不在本文介绍范围之内,下面重点介绍第二种方法。

说明

在我们的印象里 asp.net的Web服务是以.asmx来结尾的,而我们现在的asp.net也能实现Web服务,这是因为默认Web.config中已经添加了System.Web.Handlers.ScriptModule,它是用于管理asp.net中ajax功能的HTTP模块,这样不管用户是请求.asmx文件还是.aspx文件,都会通过此处理程序来处理请求。

后台代码:

using System.Web.Services; //引入命名空间

[WebMethod]
public static string SayHello()
{return "Hello Ajax!";
}

前台页面代码:

<form id="form1" runat="server">
<div><asp:Button ID="btn" runat="server" Text="验证用户" />
</div>
</form>

Javascript代码:

$(function() {     $("#btn").click(function() {     $.ajax({              type: "post", //要用post方式                 url: "Demo.aspx/SayHello",//方法所在页面和方法名contentType: "application/json; charset=utf-8",     dataType: "json",     success: function(data) {                    alert(data.d);//返回的数据用data.d获取内容
            },error: function(err) {     alert(err);     }     });});
});

效果:

需要注意的地方

一、data参数写法

//1)普通写法,JSON键值对,如:单个参数的
data:"{newsID:"+ id +"}",
//多个参数的形式:
data:"{newsID:"+ newsID +",name:"+ name +"}",
//2)文艺写法:各种引号,双引号,单引号拼接,如
//单个参数写法:
data:"{'name':'"+ name +"'}",
//多个参数写法:
data: "{'content':'" + $("#content").val() + "','createTime':'" + $("#createTime").val() + "','creator':'" + $("#creator").val() + "'}"
//容易出错!!!!!

二、用QueryString传值是后台取不到的问题

在WebMethod()方法中,是不能通过 HttpContext.Current.QueryString.Get("id")来获取query string,
因为在WebMethod()默认是用POST方法提交的,而用GetQueryString是不能取到值的。
替代方法是用JS获取url中的参数,用ajax提交给后台方法是用:
< script type = "text/javascript" >function getArgs(strParame) {var args = new Object();var query = location.search.substring(1); // Get query stringvar pairs = query.split("&"); // Break at ampersandfor (var i = 0; i < pairs.length; i++) {var pos = pairs[i].indexOf('='); // Look for "name=value"if (pos == -1) continue; // If not found, skipvar argname = pairs[i].substring(0, pos); // Extract the namevar value = pairs[i].substring(pos + 1); // Extract the valuevalue = decodeURIComponent(value); // Decode it, if neededargs[argname] = value; // Store as a property
        }return args[strParame]; // Return the object
} < /script>

三、时间问题

WCF 或 模拟Web服务处理JSON时返回时间格式问题。解决方法如下:// 杂乱的时间
var rawDate = "/Date(1347120000000+0800)/";
// 提取时间字符串
var strDate = rawDate.substr(6, 13);
// 把时间字符串转化成int类型
var intDate = parseInt(strDate);
// 构造一个Date对象
var newDate = new Date(intDate);
// 将时间转化成当地时间格式
var myDate = newDate.toLocaleDateString();
// 最终结果
alert(myDate);// 合并成一句
var resultDate = new Date(parseInt("/Date(1347120000000+0800)/".substr(6, 13))).toLocaleDateString();

四、$.ajax参数详解

//标准的写法:
$.ajax({type: "post",dataType: "json",contentType: "application/json", //注意:WebMethod()必须加这项,否则客户端数据不会传到服务端data:{如上所述},//注意:data参数可以是string个int类型url: "List.aspx/DeleteNews",//模拟web服务,提交到方法// 可选的 async:false,阻塞的异步就是同步beforeSend:function(){// do something.// 一般是禁用按钮等防止用户重复提交$("#btnClick").attr({disabled:"disabled"});// 或者是显示loading图片
     },success: function (data) {alert("success: " + data.d);//注意这里:必须通过data.d才能获取到服务器返回的值// 服务端可以直接返回Model,也可以返回序列化之后的字符串,如果需要反序列化:string json = JSON.parse(data.d);// 有时候需要嵌套调用ajax请求,也是可以的
     },complete: function(){//do something.$("#btnClick").removeAttr("disabled");// 隐藏loading图片
     },error: function (data) {alert("error: " + data.d);}
});

Jquery Ajax调用aspx页面方法相关推荐

  1. ajax调用ashx的方法,jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法

    1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是&q ...

  2. aspx后台调用前台jquery_Jquery Ajax调用aspx页面方法

    在asp.net webform开发中,用jQuery ajax传值一般有几种玩法 1)普通玩法:通过一般处理程序ashx进行处理: 2)高级玩法:通过aspx.cs中的静态方法+WebMethod进 ...

  3. ajax离开页面方法,jQuery中ajax调用当前页面方法

    $.ajax({ type: 'POST', url: 'AddressManager.aspx/GetProvince',//AddressManager.aspx当前页面 data: '{cach ...

  4. asp.net ajax1.0基础回顾(六):调用ASPX页面方法

    在aspx页面中,可能通过asp.net ajax调用其页面方法,具体设置如下. 1.服务器端代码(页面对象代码): using System.Web; using System.Web.Servic ...

  5. 隐藏ajax的调用地址,c# – ASP.NET jQuery Ajax调用代码隐藏方法

    我对Web开发非常新鲜,但在开发方面有很多经验.我有一个ASP页面有几个输入字段和一个提交按钮.这个提交按钮纯粹叫$.ajax,我打算在代码隐藏文件中调用一个方法.不过,我注意到两件有趣的事情.首先, ...

  6. Jquery ajax调用后台aspx后台文件方法(不是ashx)

    在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下. (1)通过aspx.cs的静态方法+WebMethod进行处理 简单的介绍下 ...

  7. ASPX页面AJAX调用ASPX后台

    虽然aspx现在用的越来越少,但是以前的一些项目仍旧是使用WebForm来实现的,我们仍然会遇到使用WebForm 并且实现AJAX的需求: 现在提供两种方法来实现aspx页面通过ajax调用aspx ...

  8. ajax调用asp.net,jQuery.ajax()调用asp.net后台方法(非常重要)

    http://www.cnblogs.com/zxhoo/archive/2011/01/30/1947752.html 用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先 ...

  9. 使用jquery ajax调用后台方法 有时候不调用回调函数

    今天在编辑修改页面时遇到了一个很尴尬的问题,浪费了好多时间,问题描述: 使用jquery ajax调用后台方法,正确时弹出提示框,并且跳转到list列表页面.然而,写好了之后有时候会不跳转,直接刷新一 ...

最新文章

  1. 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )
  2. mac玩rust用什么画质_玩七日杀Steam游戏用什么加速器?电狐加速器
  3. 解除织梦dedeCMS标题/关键词/ 简略标题长度限制听语音
  4. 简化PHP开发的10个工具
  5. 第一个SpringMVC入门程序
  6. JAVA和遮掩_JAVA 你不知道的秘密 覆写,重载,隐藏,遮蔽,遮掩
  7. 大学计算机基础知识判断题,大学计算机基础学习知识判断题.doc
  8. java中对象类型转换_Java中的对象的类型转换介绍(附代码)
  9. AndroidStudio安卓原生开发_Intent传过来的值会自动变化_太奇怪了_你碰见过嘛_Http并发引起的问题?_可通过静态变量传值的方式解决---Android原生开发工作笔记130
  10. JavaScript异常处理
  11. linux 命令行删除分区,如何在 Linux 中删除分区
  12. 什么叫百度下拉框?除了百度下拉还有哪些下拉词框可以优化?
  13. 在Eclipse中配置DOS(cmd)窗口
  14. 98五笔86五笔及五笔字型口诀字根表
  15. 【MATLAB】机器学习:线性判别分析LDA
  16. 火车头文章标题伪原创插件(文章双标题插件)
  17. 完全查杀VIKING(威金蠕虫)病毒与免疫补丁
  18. 记录一下自己用STM32完整开发一台双模机械键盘的过程(附代码和原理图)
  19. 力扣刷题 DAY_72 回溯
  20. 谭铁牛院士谈人工智能发展新动态

热门文章

  1. 虚幻UE4的后处理特效介绍
  2. [unreal4入门系列之十一] 在UE4中编写C++代码控制角色
  3. 英伟达新核弹GPU:4nm制程800亿晶体管,20张即可承载全球互联网流量,全新Hopper架构太炸了...
  4. 体验首款Linux消费级平板,原来芯片和系统全是国产
  5. 全球首个塑料ARM芯片登上Nature,成本仅同类硅芯片1/10
  6. 她琴棋书画全能,还进入清华计算机系实验室,被赞智商太超群、能力过强悍...
  7. 今年央视春晚的创意担当,给了这个1岁的拓荒牛机器人
  8. 搭载M1芯片的MacBook能不能当开发主力机?程序员半个月的亲身体验都在这里
  9. 波士顿动力CEO:不排斥军方订单,就想你粗暴地对待机器狗
  10. Hibernate学习第一天