一说到开始,我们当然需要项目。

首先,创建一个Asp.net Web 应用,然后新增一个名称为“Web 服务”的文件,也就是后缀名为".asmx"的文件,然后需要进行配置一下,在Web.Config中加入如下配置节点:

在HttpHandlers节点中,需要注册:

<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

然后需要在System.Web下注册WebServices节点:

<webServices>
      <protocols>
        <add name="HttpSoap"/>
        <add name="HttpPost"/>
        <add name="HttpGet"/>
        <add name="Documentation"/>
      </protocols>
    </webServices>

配置完毕后,下面开始进行具体的讲解。
1.利用Get方式进行数据读写操作

首先,前台,我们代码如下:

        $(document).ready(function () {
            $("#Button1").click(function () {
                $.ajax({
                    url: "Ajax/WebService1.asmx/HelloWorld",
                    type: "get",
                    data: "name=John&location=Boston",
                    success: function (result) {
                        $("#test").html(result.text);
                    },
                    error: function (data) {
                        alert(data.value);
                    }
                });
            });
        });

后台,我们的代码如下:

using System.Web.Services;
using System.Threading;

namespace Nxt.Web.Ajax
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            Thread.Sleep();
            return this.Context.Request.QueryString["name"];
        }
    }
}

得到的结果如我们预料,服务器端返回了“John”。

2.利用Post方式进行数据读写操作。

首先是前端代码:

  $(document).ready(function () {
            $("#Button1").click(function () {
                $.ajax({
                    url: "Ajax/WebService2.asmx/HelloWorld",
                    type: "post",
                    contentType: "application/json",  //from backend
                    dataType: "json",  // send to backend
                    data: '{"name":"test"}',
                    success: function (result) {
                        $("#test").html(result.d);
                    },
                    error: function (data) {
                        //alert(data.value);
                    }
                });
            });
        });

然后是后端的处理过程,在前端代码中,我们可以看到,我们通过contentType: "application/json",表明后台传送到前台的是JSON格式的数据。 而通过dataType: "json",则表明我们往后端传送的也是json类型的数据。

using System.Web.Services;
using System.Threading;

namespace Nxt.Web.Ajax
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class WebService2 : System.Web.Services.WebService
    {
        [WebMethod]
        public string HelloWorld(string name)
        {
            Thread.Sleep();
            return name;
        }
    }
}

这样,我们通过Post方式得到了预期的结果。
这里我需要特别说明的是,当用json数据当做参数通过Post方式传入后台的时候,后台的参数名称可以与前台保持一致。

那么我们后台取值的时候,直接把参数拿过来用就行了。在例子里,我的json数据为:{"name":"test"},那么在后台,我需要获取的值,就保存在了参数 string name中了。

直接拿过来用就行了。

3.直接操作后台返回的List对象

前台代码如下:

 $(document).ready(function () {
            $("#Button1").click(function () {
                $.ajax({
                    url: "Ajax/WebService2.asmx/GetList",
                    type: "post",
                    contentType: "application/json",  //from backend
                    dataType: "json",  // send to backend
                    data: '{"i":"10"}',
                    success: function (result) {
                        $(result.d).each(function (value) {
                            $("#test").append(this.toString()+" ");
                        });
                    },
                    error: function (data) {
                        //alert(data.value);
                    }
                });
            });
        });

后台代码如下:

        [WebMethod]
        public List<int> GetList(int i)
        {
            List<int> list = new List<int>();
            do{
                list.Add(i);
                i--;
            });
            return list;
        }

最后,屏幕上打印出了我们需要的数据: 10 9 8 7 6 5 4 3 2 1。

4.直接操作后台返回类对象

前台:

 $(document).ready(function () {
            $("#Button1").click(function () {
                $.ajax({
                    url: "Ajax/WebService2.asmx/GetModel",
                    type: "post",
                    contentType: "application/json",  //from backend
                    dataType: "json",  // send to backend
                    data: '{}',
                    success: function (result) {
                        $(result.d).each(function (value) {
                            debugger;
                            $("#test").append(this["UserID"].toString() + " " + this["UserName"].toString() + " " + this["UserAddr"].toString());
                        });
                    },
                    error: function (data) {
                        debugger;
                        //alert(data.value);
                    }
                });
            });
        });

后台代码:

 [WebMethod]
        public Common.TestModel GetModel()
        {
            , UserName = "nxt", UserAddr = "beijing" };
        }

5.直接操作返回的dataset数据集

前端代码:

$(document).ready(function () {
            $("#Button1").click(function () {
                $.ajax({
                    url: "Ajax/WebService2.asmx/GetDataSet",
                    type: "post",
                    dataType: "xml",  // send to backend
                    data: '{}',
                    success: function (result) {
                        try {
                            $(result).find("Table1").each(function () {
                                $("#test").append($(this).find("ID").text() + " " + $(this).find("Value").text());
                            });
                        }
                        catch (e) {
                            alert(e);
                            return;
                        }
                    },
                    error: function (data) {
                        //alert(data.value);
                    }
                });
            });
        });

后端代码:

        [WebMethod]
        public DataSet GetDataSet()
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            dt.Columns.Add("ID", Type.GetType("System.String"));
            dt.Columns.Add("Value", Type.GetType("System.String"));
            DataRow dr = dt.NewRow();
            dr["ID"] = "scy";
            dr["Value"] = "河南理工大学";
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dr["ID"] = "scy1";
            dr["Value"] = "河南理工大学1";
            dt.Rows.Add(dr);
            ds.Tables.Add(dt);
            return ds;
        }

得到的结果是:scy 河南理工大学scy1 河南理工大学1

符合预期。

最后加一个loading效果的特效,以便备忘:

    <style type="text/css">
      #loading
        {
          position:absolute;
          top:50%;
          left:50%;
        }
    </style>
 $(document).ready(function () {
            $('#loading').ajaxStart(function () {
                $(this).html("<img src='Images/loading.gif'>").show();
            }).ajaxStop(function () {
                $(this).hide();
            });
        });

Asp.net通过Jquery操作WebService进行Ajax读写的更多相关文章

  1. jquery操作ajax返回的页面元素

    这两天工作不忙,正好从朋友那里拿到一个某个应用的开发文档,相关数据放在了mongodb里,自己电脑可以本地开启服务器然后通过给的借口来获取数据.由于这是一个比较大比较全的一个完整项目,也没有那么多经历 ...

  2. jQuery框架-2.jQuery操作DOM节点与jQuery.ajax方法

    一.jQuery操作DOM 内部插入操作: append(content|fn):向每个匹配的元素内部追加内容. prepend(content):向每个匹配的元素内部前置内容. 外部插入操作: af ...

  3. json数据的jquery操作和asp.net后台操作

    jquery操作 json对象创建 var item0={"a":"val1","b":"val2"}; json对象字 ...

  4. jQuery入门(2)使用jQuery操作元素的属性与样式

    jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...

  5. jQuery调用WebService实现增删改查的实现

    第一篇博客,发下我自己写的jQuery调用WebService实现增删改查的实现. 1 <!DOCTYPE html> 2 3 <html xmlns="http://ww ...

  6. Jquery调用Webservice传递Json数组

    Jquery由于提供的$.ajax强大方法,使得其调用webservice实现异步变得简单起来,可以在页面上传递Json字符串到Webservice中,Webservice方法进行业务处理后,返回Js ...

  7. 通过jQuery或ScriptManager以Ajax方式访问服务

    1.客户端和服务端 服务端对外提供服务时,可以通过handler或者webservice.handler比较轻便,但是难以对外公开,只有程序员自己知道它到底做了些什么工作.webservice可以将服 ...

  8. JQuery请求WebService返回数据的几种处理方式

    打开自己的博客仔细浏览了一番,发现已经好久没有写博客了,由于最近一直比较忙碌懈怠了好多.默默反省三分钟.......言归正传,现在就对最近在学习webservice的过程中遇到的几种类型的问题中我的理 ...

  9. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

随机推荐

  1. pwd命令

    [pwd]      打印当前的工作目录             pwd==print work director 命令格式: pwd [OPTION]... 命令功能: 打印当前工作目录的全路径 命 ...

  2. [moka同学笔记]关于api-ms-win-crt-runtimel1-1-0.dll缺失

    在搞mongodb时候,碰到了这个坑.[api-ms-win-crt-runtimel1-1-0.dll缺失],懵逼不知道怎么改,从同事电脑里拷贝了这个文件,也按照网上的办法改了,改了半天还是不行.最 ...

  3. [SDK2.2]Windows Azure Virtual Network (1) 概念

    <Windows Azure Platform 系列文章目录> Windows Azure Virtual Network是非常重要的概念,其主要作用有以下两点: 1.将多台Azure V ...

  4. ILMerge

    ILMerge http://www.microsoft.com/en-hk/download/details.aspx?id=17630 ILMerge 下载地址:http://www.micros ...

  5. ASP.NET发布后,功能不响应

    题记:稀奇古怪的错误,往往是由低级脑残错误产生的 ASP.NET网站,本地调试一切正常.部署到服务器后,结果登陆按钮就卡住了,点击就是没反应. 浏览器显示Internal Server Error 5 ...

  6. JQuery-事件(部分)

    /* 1. bind跟on是类似的方法,下面示例可相互替换 $('#click1').on('click',toYellow); // click绑定toYellow方法 $('#click1').o ...

  7. scala 闭包的概念

    闭包本质上是一个函数和其引用的变量的统一定义,它的返回值依赖于这个函数外部的一个或者多个变量. var test = (i:Int) => i+sum 这里 i是一个形参, 随着函数的调用传入不 ...

  8. redis master配置了密码进行主从同步

    1.如果master不设置密码,那么直接在slave服务器配置slaveof即可 配置如下 #slaveof ip 端口 slaveof 配置好我们看下redis的日志 看是否同步成功 :S Jan ...

  9. GDCPC2016 省赛随笔

    这是第一次参加省赛,第二次参加正式的组队赛. 昨晚很早就睡,早上挺早就睡不着醒了,内心既紧张又激动(虽然赛前和队友说尽力就好,但是还是很怕打铁啊).然后吃过早餐跟随学校大部队来到了中大.发现有好多学校 ...

  10. PC客户端测试总结

    1.1界面显示内容的检查l 完整性(1显示时应考虑数据显示宽度的自适应或自动换行(数据长度较长).(2所数据展现的界面(如查询等),必须使测试数据的记录数超过一页,以验证满页时其窗体是否有横向.纵向滚 ...