Default.aspx页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function Ajax() {
var timer = new Date();
var name = " 客户端数据";
AjaxWebService.SayHello(name, ajaxResult, ajaxError, null);
}
function ajaxResult(result) {
document.getElementById("labMessage").innerHTML = result
}
function ajaxError(result) {
alert(result._message);
}
function Ajax2() {
var timer = new Date();
var name = " 客户端数据";
PageMethods.SayHello(name, ajaxResult2, ajaxError2, null);
}
function ajaxResult2(result) {
document.getElementById("labMessage2").innerHTML = result
}
function ajaxError2(result) {
alert(result._message);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
<Services>
<asp:ServiceReference Path="~/AjaxWebService.asmx" />
</Services>
</asp:ScriptManager>
<input type="button" value="测试" οnclick="Ajax();" />
<span id="labMessage"></span>
<br />
<input type="button" value="测试" οnclick="Ajax2();" />
<span id="labMessage2"></span>
</form>
</body>
</html>
Default.aspx.cs页面
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
// 注意,需要标识为WebMethod ScriptManager的EnablePageMethods="true" 要让前台调用的方法,一定要是public和static的
[System.Web.Services.WebMethod]
public static string SayHello(string str)
{
//throw new Exception();
return "页面方法 "+DateTime.Now.ToString() + str;
}
}
AjaxWebService.asmx页面数据
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
/// <summary>
///AjaxWebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class AjaxWebService : System.Web.Services.WebService {
public AjaxWebService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod, ScriptMethod]
public string SayHello(string str) {
//throw new Exception();
return DateTime.Now.ToString() + str;
}
}
SayHello是在WebService中对应的WebService方法,但在这里它多了3个参数。
SayHello(string str,onSuccess,onError,userContent);