您的位置:首页 > 编程语言 > ASP

ASP.NET AJAX 调用本地WebService(转)

2007-02-05 16:09 519 查看
现最新版本的改动很大,下面就测试情况作一下说明(这里借用官方的例子):
1、首先建一个WebService 文件(HelloWorldService.asmx),代码如下:

<%@ WebService Language="C#" Class="Samples.AspNet.HelloWorldService" %>

using System;
using System.Web;
using System.Web.Services;
using System.Xml;
using System.Web.Services.Protocols;
using Microsoft.Web.Script.Services;

namespace Samples.AspNet
{

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class HelloWorldService : System.Web.Services.WebService
{

[WebMethod]
public string HelloWorld(String query)
{
string inputString = Server.HtmlEncode(query);
if (!String.IsNullOrEmpty(inputString))
{
return String.Format("Hello, you queried for {0}. The "
+ "current time is {1}", inputString, DateTime.Now);
}
else
{
return "The query string was null or empty";
}
}
}
}
这里要说明的是[ScriptService] 属性,只有加上这个性属性,才能在页面中通过js进行异步调用;

2、建一个调用页面(AjaxScript1.aspx),如下:
<%@ Page Language="C#" %>
<!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 id="Head1" runat="server">
<title="测试一" />
<style type="text/CSS">
body { font: 11pt Trebuchet MS;
font-color: #000000;
padding-top: 72px;
text-align: center }

.text { font: 8pt Trebuchet MS }
</style>

</head>
<body>
<form id="Form1" runat="server">
<asp:ScriptManager runat="server" ID="scriptManager">
<Services>
<asp:ServiceReference path="~/HelloWorldService.asmx" />
</Services>
</asp:ScriptManager>

<div>
Search for
<input id="SearchKey" type="text" />
<input id="SearchButton" type="button" value="Search"
onclick="DoSearch()" />
</div>
</form>
<hr style="width: 300px" />
<div>
<span id="Results"></span>
</div>
<script type="text/javascript">

function DoSearch()
{
var SrchElem = document.getElementById("SearchKey");
Samples.AspNet.HelloWorldService.HelloWorld(SrchElem.value, OnRequestComplete);
}

function OnRequestComplete(result)
{
var RsltElem = document.getElementById("Results");
RsltElem.innerHTML = result;
}

</script>
</body>
</html>

注意,这里的<asp:ScriptManager runat="server" ID="scriptManager">
<Services>
<asp:ServiceReference path="~/HelloWorldService.asmx" />
</Services>
</asp:ScriptManager>
放在<form>中了。

改变好像挺大!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: