首先创一个WEB项目,直接使用默认创建的那个aspx页面编码
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">
//下面2个方法实现了Ajax+WebService的无刷新 HandleStateChange为回调函数 执行完HelloWorld返回的值将赋给HandleStateChange的参数reusltText 这里有点难理解 习惯就好
function getStr() {
JSWebService.HelloWorld(HandleStateChange);
}
function HandleStateChange(reusltText) {
$get("result").innerHTML = reusltText;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" value="JS调用WebService" onclick="getStr()" />
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/JSWebService.asmx" />
</Services>
</asp:ScriptManager>
<div id="result">
</div>
</div>
</form>
</body>
</html>
接着创建webservice
JSWebService.cs代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
/// <summary>
///JSWebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class JSWebService : System.Web.Services.WebService {
public JSWebService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
}
以上就是完整的代码。其中要注意的有以下几点:
1、javascript中的2个方法的意思要懂,就是实现无刷新
2、asp:ScriptManager的配置要懂,其中Path属性的值就是js要掉用的webservice类
3、webservice类中[System.Web.Script.Services.ScriptService]的注释要取消,为了让JS能调用到该类