一步步学习AJAX(WebService)
首先需要了解:
我们是怎样利用WebService.asmx的?
WebService.asmx中需要注意的几个地方?
·首先,我们需要建立一个页面:Color.aspx
因为我们学习的是ajax,所以,我们当然少不了<scriptManager id="scriptManager1" runat="server"></scriptManager>控件,有且只有一个。
·在这个页面上建立和WEbService进行联系的控件:
<input type="button" value="Reverse Color" Onclick="ReColor()"/>
具体的代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Color.aspx.cs" Inherits="Color" %>
<!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 language="javascript" type="text/javascript">
function ReColor()
{
//注意:此处,我们还可以直接利用json方式来写,如下:
//var color={"red":50,"green":100,"blue":200};
var color=new Object();
color.red=50;
color.green=100;
color.blue=200;
[命名空间名称.]ColorService.Reverse(color,ColorSuccessfull); //此处,来调用一个回调函数ColorSuccessfull
//其中,[如果有命名空间的话,我们此处写的就是命名空间名称],ColorService是类名,Reverse是方法名,Color是我们要传递的参数,ColorSuccessfull是正确放回的结果的方法。
}
function ColorSuccessfull(result)//result是返回的结果
{
//注意:此处,我们应用的是String.Format()方法进行了格式化;
alert(String.format(
"red:{0}\ngreen:{1}\nblue:{2}",
result.red,
result.green,
result.blue
));
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path ="~/ColorService.asmx" InlineScript="true" />
</Services>
</asp:ScriptManager>
<input type="button" value="Reverse Color" onclick="ReColor();" />
</div>
</form>
</body>
</html>
·接下来,我们就要开始写ColorWebService.asmx的方法了,如下:
using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Web.Script.Services;
/// <summary>
///ColorService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[ScriptService]
public class ColorService : System.Web.Services.WebService {
[WebMethod]
[GenerateScriptType(typeof(Color))]
public Color Reverse(Color color)
{
return new Color(
(byte)(255-color.red),
(byte)(255- color.green),
(byte)(255- color.blue));
}
}