使用AJAX.NET2.0注意事项
1、使用AJAX.NET最好在建立项目时建立ASP.NET AJAX-Enabled Web Site项目,建立ASP.NET AJAX-Enabled Web Site项目时,会自动配置web.config(web.config必须做相应的配置),这样我们就不需要再手动配置;
如果不做web.config的配置,则在客户端会提示“Sys未定义”
ASP.NET AJAX 语法的语句不能写在Head里面,否则将会出现“Sys not defined ”之类的错误
2、ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAX的ASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理等。
在ASP.NET AJAX中,由于一个ASPX页面上只能有一个ScriptManager控件,所以在有Master-Page的情况下,如果需要在Master-Page和Content-Page中需要引入不同的脚本或注册不同的WebService时,就需要在Content-page中使用ScriptManagerProxy,而不是ScriptManager,ScriptManagerProxy和 ScriptManager是两个非常相似的控件。
3、定义AJAX调用的Web Service时,需要引入空间using System.Web.Script.Services;并且在类定义前加[ScriptService]。如果不做该步骤操作,则在客户端会提示“XXXXXX未定义”
以下为一个简单的示例:
(1)DataBaseInfo.cs
/// <summary>
/// Web Service返回的数据类型
/// </summary>
public struct DataBaseInfo
{
private string _v1;
private double _v2;
private string _des;
public DataBaseInfo(string v1, double v2, string des)
{
this._v1 = v1;
this._v2 = v2;
this._des = des;
}
public string v1
{
get { return (_v1); }
}
public double v2
{
get { return (_v2); }
}
public string des
{
get { return (_des); }
}
}
(2)WebServiceSample.cs
using System.Web.Script.Services;
/// <summary>
/// Ajax.net调用的Web Service
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class WebServiceSample : System.Web.Services.WebService {
public WebServiceSample () { }
[WebMethod]
public DataBaseInfo HelloWorld(string content)
{
return (new DataBaseInfo("成功返回", 100, content));
}
(3)母版页
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager id="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</form>
</body>
</html>
(4)AJAX.NET调用页
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:ScriptManagerProxy id="ScriptManagerProxy1" runat="server">
<services>
<asp:ServiceReference Path="~/WebService/WebServiceSample.asmx"></asp:ServiceReference>
</services>
<scripts>
<asp:ScriptReference Path="~/JS/SVGJS.js"></asp:ScriptReference>
</scripts>
</asp:ScriptManagerProxy>
<div>
<input type="text" id="inputName" size="20" />
<input id="button" type="button" value="调 用" onclick="return OnbuttonGo_click()" />
</div>
</asp:Content>