在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 stringSayHello()

{return "Hello Ajax!";

}

前台页面代码:

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" >

functiongetArgs(strParame) {var args = newObject();var query = location.search.substring(1); //Get query string

var pairs = query.split("&"); //Break at ampersand

for (var i = 0; i < pairs.length; i++) {var pos = pairs[i].indexOf('='); //Look for "name=value"

if (pos == -1) continue; //If not found, skip

var argname = pairs[i].substring(0, pos); //Extract the name

var value = pairs[i].substring(pos + 1); //Extract the value

value = decodeURIComponent(value); //Decode it, if needed

args[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 = newDate(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);

}

});

aspx后台调用前台jquery_Jquery Ajax调用aspx页面方法相关推荐

  1. ExtJs异步ajax调用和同步ajax调用公用方法

    Js代码 //异步ajax调用 /** * 异步调用ajax,成功后返回值,作为回调函数的参数 调用失败会提示 * * @param {} *            urlStr * @param { ...

  2. aspx后台调用前台jquery_jQuery调用Asp.Net后台方法

    常用的ajax就不讲了,这里主要是说通过ajax调用asp.net后台的cs文件暴露的方法. 前台: $("input[type='button'][value='GetOneDayLate ...

  3. ASP.NET后台调用前台JS函数的三种常见方法

    为什么80%的码农都做不了架构师?>>>    第一种:使用普通的添加控件中的Attributes属性进行调用 例如,像一般的普通的按钮:Button1.Attributes.Add ...

  4. 利用jquery getJSON 调用ashx实现ajax调用

    一个页面中放入不同业务逻辑的div,利用ajax调用.net ashx页面根据不同的返回值显示,隐藏不同的div. 1.ashx返回JSON格式的内容,注意context.Response.Conte ...

  5. ajax重复被调用,重复jQuery ajax调用

    Wiktor Bedna.. 10 更好的方法是使用setTimeout,因此您只在前一个请求完成时发出请求. 应该怎么做 想象一下,由于某种原因(服务器故障,网络错误)的请求需要比定义的时间更长的时 ...

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

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

  7. ajax返回去掉引号,为什么我的服务器代码ajax调用返回一个用双引号括起来的响应?...

    我正在从我的javascript到aspx页面的webmethod进行ajax调用.由于某种原因,我正在返回的字符串用双引号括起来.我试图剥离它们,但替换只是因为某种原因取代了第一个.在服务器端没有包 ...

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

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

  9. ASPX页面AJAX调用ASPX后台

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

最新文章

  1. android 全局光标颜色,EditText修改光标和背景色(绝对简单实用)
  2. 【邀请函】2021钉钉宜搭·线上沙龙,邀您云上相见!
  3. asiHttpRequst 学习地址
  4. android手势监听功能吗,Android手势监听 OnGestureListener (短按,长按,慢滑动,快滑动)...
  5. POJ 1741 Tree(树的点分治)
  6. 微信内置浏览器中实现点击电话号码自动到拨号页面
  7. 大数据 数据库 评测_大数据产品能力评测介绍.pdf
  8. Android中的GraphicBuffer同步机制-Fence
  9. i2c驱动之at24c08(1)
  10. 微信小程序优惠券制作方法
  11. linux 迁移类型,迁移到Linux前必须要知道的五个方面
  12. MarkDown在线编辑器(支持公众号知乎)
  13. 配置 postgresql 自启动项 ubuntu 16.4
  14. 关于LNK2005 _main 已经在 某某某.obj 中定义的问题
  15. 计算机操做系统(十二):进程同步和互斥
  16. Lua程序设计随笔(3)
  17. 【CVPR2020视频超分辨率】Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution 阅读笔记
  18. 微软的面试题及答案-超变态但是很经典(转)
  19. 身份证最后一位的校验
  20. ADAS进入「红海争夺」,这家外资Tier1「降本30%」应战

热门文章

  1. .NET面试经典问答
  2. Ubuntu9.10安装常用软件
  3. Fedora下网络配置及相关命令
  4. 华为2016年应届毕业生招聘公告
  5. LInux找不到动态链接库,./cyusb_linux: error while loading shared libraries: libcyusb.so: cannot open shared
  6. 怎么查看电脑配置参数linux,linux下查看电脑配置
  7. 柱状图添加数字标签_Python之利用Plotnine作图(一)——简单柱状图
  8. Android 三方库EventBus的使用
  9. Iterator 和 Iterable的区别
  10. 011_Raphael常用方法