参考:
JQuery直接调用asp.net后台WebMethod方法
AJAX向后台WebMethod static方法传递数组并接收
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法。
[WebMethod] 命名空间
1、无参数的方法调用, 注意:1.方法一定要静态方法,而且要有[WebMethod]的声明
后台<C#>:
- using System.Web.Script.Services;
- [WebMethod]
- public static string SayHello()
- {
- return "Hello Ajax!";
- }
前台<JQuery>:
- $(function() {
- $("#btnOK").click(function() {
- $.ajax({
- //要用post方式
- type: "Post",
- //方法所在页面和方法名
- url: "data.aspx/SayHello",
- contentType: "application/json; charset=utf-8",
- dataType: "json",
- success: function(data) {
- //返回的数据用data.d获取内容
- alert(data.d);
- },
- error: function(err) {
- alert(err);
- }
- });
- //禁用按钮的提交
- return false;
- });
- });
2、带参数的方法调用
后台<C#>:
- using System.Web.Script.Services;
- [WebMethod]
- public static string GetStr(string str, string str2)
- {
- return str + str2;
- }
前台<JQuery>:
- $(function() {
- $("#btnOK").click(function() {
- $.ajax({
- type: "Post",
- url: "data.aspx/GetStr",
- //方法传参的写法一定要对,str为形参的名字,str2为第二个形参的名字
- data: "{'str':'我是','str2':'XXX'}",
- contentType: "application/json; charset=utf-8",
- dataType: "json",
- success: function(data) {
- //返回的数据用data.d获取内容
- alert(data.d);
- },
- error: function(err) {
- alert(err);
- }
- });
- //禁用按钮的提交
- return false;
- });
- });
3、带数组参数的方法调用
前台
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
< script src = "http://code.jquery.com/jquery-1.10.1.js" ></ script > < script > $(document).ready(function () { var myCars = new Array(); myCars[0] = "Saab"; myCars[1] = "Volvo"; myCars[2] = "BMW"; $.ajax({ type: "POST", url: "<%=Request.Url.AbsolutePath%>/Concat", data: JSON.stringify({ arr: myCars }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { alert(response.d); }, failure: function () { alert("fail"); } }); }); </ script > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[System.Web.Script.Services.ScriptService] public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { } [WebMethod] public static string Concat(List< string > arr) { string result = "" ; for ( int i = 0; i < arr.Count; i++) { result += arr[i]; } return result; } } |
4、返回数组方法的调用
后台<C#>:
- using System.Web.Script.Services;
- [WebMethod]
- public static List<string> GetArray()
- {
- List<string> li = new List<string>();
- for (int i = 0; i < 10; i++)
- li.Add(i + "");
- return li;
- }
前台<JQuery>:
- $(function() {
- $("#btnOK").click(function() {
- $.ajax({
- type: "Post",
- url: "data.aspx/GetArray",
- contentType: "application/json; charset=utf-8",
- dataType: "json",
- success: function(data) {
- //插入前先清空ul
- $("#list").html("");
- //递归获取数据
- $(data.d).each(function() {
- //插入结果到li里面
- $("#list").append("<li>" + this + "</li>");
- });
- alert(data.d);
- },
- error: function(err) {
- alert(err);
- }
- });
- //禁用按钮的提交
- return false;
- });
- });
- /// <reference path="jquery-1.4.2-vsdoc.js"/>
- $(function() {
- $("#btnOK").click(function() {
- $.ajax({
- type: "Post",
- url: "data.aspx/GetArray",
- contentType: "application/json; charset=utf-8",
- dataType: "json",
- success: function(data) {
- //插入前先清空ul
- $("#list").html("");
- //递归获取数据
- $(data.d).each(function() {
- //插入结果到li里面
- $("#list").append("<li>" + this + "</li>");
- });
- alert(data.d);
- },
- error: function(err) {
- alert(err);
- }
- });
- //禁用按钮的提交
- return false;
- });
- });
Jquery ajax传递复杂参数给WebService
Entity:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; namespace Entity { [DataContract] public class User { [DataMember] public string Name { get ; set ; } [DataMember] public int Age { get ; set ; } } } |
WebService:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using Entity; namespace JQuery.Handler { [WebService(Namespace = "http://tempuri.org/" )] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem( false )] [System.Web.Script.Services.ScriptService] public class UserService1 : System.Web.Services.WebService { [WebMethod] public string ComplexType(User hero,List<User> users) { return hero.Name + " has " + users.Count + " people!" ; } } } |
Html:
<html xmlns= "http://www.w3.org/1999/xhtml" > <head> <title>Ajax</title> <script src= "../Scripts/jquery-1.6.min.js" type= "text/javascript" ></script> <script type= "text/javascript" > $(function () { $( "#btnWeb" ).click(function () { $.ajax( { type: "post" , url: "../Handler/UserService.asmx/ComplexType" , dataType: "json" , contentType: "application/json" , data: '{ "hero" : { "Name" : "zhoulq" , "Age" :27}, "users" :[{ "Name" : "zhangs" , "Age" :22},{ "Name" : "wangw" , "Age" :26},{ "Name" : "liuj" , "Age" :25}, |
{ "Name" : "luos" , "Age" :24}]}', success: function (data) { $( "#web" ).text(data.d); } }); }); }); </script> </head> <body> <input id= "btnWeb" type= "button" value= "请求WebService" /><label id= "web" ></label> </body> </html> |