参考:
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> |
浙公网安备 33010602011771号