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

在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下。

  (1)通过aspx.cs的静态方法+WebMethod进行处理

   简单的介绍下WebMethod方法的用法

   1.修饰符主要用public static修饰

   2.方法前面加上[WebMethod]属性表明这是WebMethod方法

   3.前台html页面(Client端)访问时要使用post方法,和后台.cs文件进行数据交互,否则会返回整个html页面。

   4.当后台页面返回数据后,前台html页面需要用data.d接收返回的json字符串。

   5.访问url:http://abc.com/abc.aspx/ajax方法

   aspx.cs代码:

using System.Web.Services; 

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

   前台jquery代码:

$(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);     
            }     
        });
    });     
});

 html代码:

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

 (2)通过一般处理程序ashx进行处理;

   Jquery代码:

 $.ajax({  
           type: "POST",  
           url: "S_CBFBM.ashx",  
           data: { ZBM: p_zdm },  
           beforeSend: function() {  
            //$("#div_load").visible = "true;  
           },  
           success: function(msg) {  
           //$("#div_load").visible = false;  
           $("#ds").html("<p>" + msg + "</p>");  
           $("#CBFBM").val(msg);  
                }  
        });  

  ashx.cs代码:

    <%@ WebHandler Language="C#" Class="AjaxHandler" %>  
    using System;  
    using System.Web;  
      
    public class AjaxHandler : IHttpHandler {  
        public void ProcessRequest (HttpContext context) {  
            context.Response.ContentType = "text/plain";  
            if (context.Request["name"].ToString() == "admin" &&  
                context.Request["pass"].ToString() == "admin")  
            {  
                context.Response.Write("Y");  
            }  
            else  
            {  
                context.Response.Write("N");  
            }   
        }  
       
        public bool IsReusable {  
            get {  
                return false;  
            }  
        }  
    }  

  (3)注意:当要返回一个泛型数组,枚举等不是字符串的时候需要对返回的内容进行JSON序列化,序列化代码如下:

  JavaScriptSerializer jsonUtil = new JavaScriptSerializer();
  string json = jsonUtil.Serialize(需要返回的对象);

   (4)序列完后前台html页面接收需要用each遍历时,因为in对字符串不管用,所以要对传过来的字符串进行Json化,代码如下

    $.get(url,function(data){  
                obj= $.parseJSON(data);    //Json化之后可以用each遍历
                $.each(obj, function(k,v) {  
                    alert(v.id);  
                });  
       });  

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

WCF技术剖析之十六:数据契约的等效性和版本控制

数据契约是对用于交换的数据结构的描述,是数据序列化和反序列化的依据。在一个WCF应用中,客户端和服务端必须通过等效的数据契约方能进行有效的数据交换。随着时间的推...

19490
来自专栏lulianqi

直接修改托管堆栈中的type object pointer(类型对象指针)

最初的我简单认为数据的类型就是定义时字段的类型修饰决定的(回来发现这种观点是绝对错误的)

17110
来自专栏安恒网络空间安全讲武堂

二进制学习系列-栈溢出之Passcode详解

概念:每一个外部定义的符号在全局偏移表(Global offset Table)中有相应的条目,GOT位于ELF的数据段中,叫做GOT段。

18040
来自专栏mini188

学习笔记: Delphi之线程类TThread

新的公司接手的第一份工作就是一个多线程计算的小系统。也幸亏最近对线程有了一些学习,这次一接手就起到了作用。但是在实际的开发过程中还是发现了许多的问题,比如挂起与...

33080
来自专栏技巅

Redis第一个版本源码分析-启动过程分析1

20450
来自专栏技术博客

Asp.Net Web API 2第十二课——Media Formatters媒体格式化器

阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.h...

9730
来自专栏林德熙的博客

代码段

但很多时候我们需要使用通知OnPropertyChanged,这时在 VisualStudio 就没有写好的,如果是写属性,这样每个都来增加一句OnProper...

18410
来自专栏苦逼的码农

谈谈HashMap、Hashtable和ConcurrenHashMap

今天,我们来谈谈HashMap, Hashtable和ConcurrentHashMap在使用上的一些区别。

98620
来自专栏hbbliyong

[译]WebAPI下的如何实现参数绑定

本文将概述在WebAPI方式下将如何将参数绑定到一个action方法,包括参数是如何被读取,一系列规则决定特定环境采用的那种绑定方式,文章最后将给出一些实际的例...

41260
来自专栏跟着阿笨一起玩NET

Assembly.Load()方法,Assembly.LoadFrom()方法,Assembly.LoadFile()方法的区别!

         这个方法通过程序集的长名称(包括程序集名,版本信息,语言文化,公钥标记)来加载程序集的,会加载此程序集引用的其他程序集,一般情况下都应该优先...

57910

扫码关注云+社区

领取腾讯云代金券