8.WCF简化的 AJAX(*)
2024-10-11 03:35:23
- 开发步骤:
- 添加一个Web项目,在Web项目中新建“新建项”->"Web"->"启用了AJAX的WCF服务"
- 页面上拖放ScriptManager控件,ScriptManager的Services属性中新增一项,Path属性设置为服务路径,比如"~/Service1.svc"
- 调用服务端方法的时候Service1.DoWork(OnDoWorkSucceed,OnDoWorkFailed),Service1为服务类名,DoWork为方法名,OnDoWorkSucceed是调用成功时被回调的函数(Javascript中的委拖),OnDoWorkFailed是调用失败时被回调的函数。两个函数都是有一个参数result的,成功函数的result值为函数返回值,失败函数的result值为错误消息。调用都是异步的,注意这是Javascript代码!
- 注意:“~Service1.svc”要加在ScriptManager的Services属性中,而不是Scripts属性中。如果写Javascript的时候没有自动提示,把aspx关掉再打开就行。如果还不行的话则手动写。
- 服务端还可以返回复杂对象,JS端可以直接从result读取复杂对象的字段值。
示例:
从服务端读取获取一个人的名字。
开发步骤:
1.建立WCF服务
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text; namespace WCFAJAX
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ServicePerson
{
// 要使用 HTTP GET,请添加 [WebGet] 特性。(默认 ResponseFormat 为 WebMessageFormat.Json)
// 要创建返回 XML 的操作,
// 请添加 [WebGet(ResponseFormat=WebMessageFormat.Xml)],
// 并在操作正文中包括以下行:
// WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
[OperationContract]//记着要把这个说明符加上
public Person getperson()
{
return new Person() { Name = "当然不错了,哈哈", Age = };
}
[OperationContract]
public void DoWork()
{
// 在此处添加操作实现
return;
} // 在此处添加更多操作并使用 [OperationContract] 标记它们
} public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
}
2.点击“生成解决方案”
3.新建空白的webform,并在上放一ScriptManager,设定ScriptManager的Service属性,把刚才的服务加到其path属性中
4.在webform中放一个html中的textbox和button,点击button时会调用javascript中的函数,得到服务传过来的值并显示于客户端。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WCFAJAX.WebForm1" %> <!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">
// <![CDATA[ function Button1_onclick() {
ServicePerson.getperson(function (data) {
document.getElementById("Text1").value = data.Name;
}, function () {
document.write("获取数据失败了.");
}); } // ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/ServicePerson.svc" />
</Services>
</asp:ScriptManager>
<div> <input id="Text1" type="text" /><input id="Button1" type="button"
value="button" onclick="return Button1_onclick()" /></div>
</form>
</body>
</html>
5.运行截图
最新文章
- using 释放资源
- jdbc链接mysql插入数据后显示问号
- Storm系列(一):搭建dotNet开发Storm拓扑的环境
- JSON对象和字符串之间的相互转换
- 端口扫描之王——nmap入门精讲(二)
- ImageOptim 图片压缩工具
- CentOS提示::unknown filesystem type &#39;ntfs&#39;.解决
- Html的空格显示
- AndroidListview 滑动过程中图片显示重复错乱解决方案
- tornado异步请求非阻塞
- iOS目录结构
- java记事本
- iwebshop两表联查
- 芝麻HTTP:Python爬虫入门之正则表达式
- 前端如何做好seo
- iTOP-4412开发板-串口转接小板的使用文档
- Android ble蓝牙问题
- Elasticsearch&#160;alias别名管理小结
- 解决 java.net.BindException: Address already in use (Bind failed)
- Python之socket编程进阶版
热门文章
- Struts工作流程
- java Thread.join()
- 2014年最新720多套Android源码2.0GB免费一次性打包下载
- linux根下目录详解及分区建议
- JVM体系结构
- SQL SERVER将某一列字段中的某个值替换为其他的值 分类: MSSQL 2014-11-05 13:11 67人阅读 评论(0) 收藏
- Animating Layout Changes(展开收起)
- Linux如何查找大文件或目录总结-1127
- 分布式Web服务器架构(转)
- windows 远程连接linux服务器