参考:
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>
|