在MS Ajax中,JS和C#交互的一种方式是调用WebService,可以是ASMX,也可以是WCF。无论采用哪种方式,系统都会自动为开发人员生成代理JS类。实现方法如下:1。建立一个网站,添加一个WCF服务(这里必须选择支持Ajax的WCF服务),如下图所示:。
2.IDE会自动为我们生成一个SVC文件,是这个SVC对应的外部接口和后台实现类,这个文件会放在App_Code下,如下图所示:。
3.修改该类的代码,如下所示:复制代码代码如下:[服务合同(命名空间='%20TestJax%20%20')][aspnet%20%20compatibility%20%20requirements(需求模式=aspnet%20%20compatibility%20%20requirements模式.允许的)]公共类服务{[运营合同]公共bool验证用户(字符串uid,字符串pwd){%20if(uid=='%20sa%20%20'%20pwd=='%20sa%20%20'){返回true}返回false}%20}%204。现在我们就可以页面里调用了,首先在页面中添加一个脚本管理器,并引入我们刚才编写的那个世界商会联合会网络服务(目的是在运行的时候生成射流研究…的代理类),如下所示:复制代码代码如下:%20%@页面语言='%20c#%20'%20AutoEventWireup='%20true%20%20'%20CodeFile='%20Default。aspx。cs%20%20'%20Inherits='%20_%20Default%20%20'%20%!DOCTYPE%20%20html%20%20PUBLIC%20%20'-//W3C//DTD%20%20XHTML%20%201.0%20Transitional//EN%20%20'%20'%20http://www%20%20.w3。org/TR/XHTML%20%201/DTD/XHTML%20%20L1-过渡。DTD%20%20'%20html%20%20xmlns='%20http://www%20%20.w3。org/1999/XHTML%20%20'%20head%20%20runat='%20server%20%20'%20title/title/head%20%20body%20%20form%20%20ID='%20form%20%201%20'%20runat='%20server%20%20'%20div%20%20ASP%20%203360%20script%20%20manager%20%20ID='%20script%20%20manager%20%201%20'%20runat接下来可以编写射流研究…代码来直接调用C#写的服务了JS。代码如下所示:复制代码代码如下:脚本类型='text/javascript%20%20'函数验证用户(uid,pwd){%20TestJax%20%20.服务。验证用户(uid,pwd,OnSucceed,on失败);}函数OnSucceed(结果){%20if(结果==true){%20window。警报('通过验证');}%20else%20%20{%20window.alert('验证失败!');}%20}函数OnFailed(结果){%20window.alert('操作失败:'结果_%20message);}/脚本6%20.这里请大家注意,在调用TestAjax%20%20.服务。验证用户方法时,代码中并没有直接取该函数的返回值,因为利用这种方案对服务器函数的调用都是异步的,正确的处理方法是指定了两个回调函数成功和失败,第一个函数是成功时的回调,后一个是失败时的回调,这两个函数都需要一个参数,OnSucceed的参数就是服务器函数的返回值,而失败的参数是失败时的出错信息,功能有点像例外类型,其中消息(_%20m)属性中出错信息,_stackTrace中出错的堆栈跟踪信息。%207.千万别说这种回调方法麻烦!其实这是一种常规的异步回调模式,大多数情况(不论什么语言)都会这么写的!8.页面上完整的代码如下所示:复制代码代码如下:%20%@页面语言='%20c#%20'%20AutoEventWireup='%20true%20%20'%20CodeFile='%20Default。aspx。cs%20%20'%20Inherits='%20_%20Default%20%20'%20%!DOCTYPE%20%20html%20%20PUBLIC%20%20'-//W3C//DTD%20%20XHTML%20%201.0%20Transitional//EN%20%20'%20'%20http://www%20%20.w3。org/TR/XHTML%20%20L1/DTD/XHTML%20%20L1-过渡。DTD%20%20'%20html%20%20xmlns='%20http://www%20%20.w3。org/1999/XHTML%20%20'%20head%20%20runat='%20server%20%20'%20title/title%20%20script%20%20type='%20text/JavaScript%20%20'%20function%20%20validate%20%20user(uid,pwd){%20testjax%20%20.服务。验证用户(uid,pwd,OnSucceed,on失败);}函数OnSucceed(结果){%20if(结果==true){%20window。警报('通过验证');}%20else%20%20{%20window.alert('验证失败!');}%20}函数OnFailed(结果){%20window.alert('操作失败:'结果_%20message);}功能按钮1%20_%20onclick(){%20var%20%20uid=$%20get('%20tbxUid%20%20').价值;var%20%20pwd=$get('tbxPwd%20%20').价值;ValidateUser(uid,pwd);}/脚本/标题正文表单ID='%20form%20%201%20'%20runat='%20server%20%20'%20div%20%20ASP%20%203360脚本管理器ID='%20script%20%20manager%20%201%20'%20runat='%20server%20%20'%20Services%20%20ASP%20%203360服务引用路径='%20~/service。SVC%20%20'//Services/asp3360脚本管理器/div用户名:输入id='tbxUid%20%20'类型='text'%20/br%20%20/密码:输入id='tbxPwd%20%20'类型='text'%20/输入id='Button1%20'类型='按钮'值='验证onclick='%20return%20%20button%20%201%20_%20onclick()'//窗体/正文/html%20%209%20.运行结果如下所示:当用户名和密码都是救世军(拯救Army)性感(性Apple)需经批准有待批准(以Approval)为准半自动的(Semi-Automatic)减震(震惊Attenuation)表面面积(表面积)时会通过验证当用户名和官友有一个值不是救世军(拯救Army)性感(性Apple)需经批准有待批准(以Approval)为准半自动的(Semi-Automatic)减震(震惊Attenuation)表面面积(表面积)时就不能通过验证
10.大家有什么问题给我发电子邮件吧:[emailprotected]