技能点:通过编写WebService,在页面js中调用WebService来进行数据查询。

网站开发,有些时候需要使用js在页面动态生成一些内容,但还有些数据要通过查询数据库才能获取的。

但由于诸如主键id等一些关键数据在后台不易获取,或在后台获取数据后不易直接在前台通过js使用。

这种情况下,使用js+ajax的方式来实现,效果也是不错的。

1.编写webservice:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using BLL;
using Model;
///
///GetProPointService 的摘要说明
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class GetProPointService : System.Web.Services.WebService {
public GetProPointService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public int GetPointByProNo(int proNo)
{
ProSelectBLL bll = new ProSelectBLL();
return bll.GetPointByProNo(proNo);
}
}

2. 在前台页面代码中注册web服务:

         <asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="~/WebService/GetProPointService.asmx" />
</Services>
</asp:ScriptManager

3. 在前台页面脚本中调用web服务:

     //事件处理函数
function btnInvoke_onclick() {
var theName = $get("tbName").value;
SimpleWebService.SayHello(theName, processRollBack);
}
//回调函数
function processRollBack(result) {
$get("result").innerHTML = result;
}

扩展:如果是循环调用webservice与数据库交互,即在事件处理函数中循环调用web服务,那么获取的数据将在事件处理函数的循环结束后逐一进行,诸如下例:

//事件处理函数
function btnInvoke_onclick() {
for (var i = ; i < ; i++) {
//循环
Service.ServiceMethod(processRollBack);
alert("test");
}
//回调函数
function processRollBack(result) {
alert(result);
}

按理,应该是"test",和result的值以a,b,a,b,a,b的方式轮流弹出的,但是这里的结果却是,先弹出3次test,然后是3次result的值。

    也就相当于事件处理函数每次循环都调用webservice,或者将参数传递个webservice,但是webservice并没有随着事件处理函数进行循环操作,而是在事件处理函数结束后统一进行应有的操作。

由于目前对web服务了解还不深,对这种现象还无法解释,但是把本来看似应该是跟着事件处理函数一块儿循环的操作放在回调函数中进行循环的方法,实现了我想要的功能。

最新文章

  1. React官网学习笔记
  2. Linux安装配置sun-java
  3. linux内置的审计跟踪工具------last和lastb
  4. Hession矩阵与牛顿迭代法
  5. HDUOJ-----(1162)Eddy&#39;s picture(最小生成树)
  6. cocos2d - CCParallaxNode 例子
  7. DOM 文档对象模型
  8. Android实现弹出输入法时,顶部固定,中间部分上移的效果
  9. Cocoa Touch 层
  10. XJOI1559树转二叉树
  11. Python之matplotlib模块安装
  12. Docker平台的基本使用方法
  13. make apr-util 报错 all recurisive
  14. 关于AJAX的基础操作
  15. [OpenCV-Python] OpenCV 核心操作 部分 III
  16. android 手机 多分辨率适配
  17. tomcat9 性能调优
  18. Android开发之SharedPreferences的封装
  19. linux中查找某端口,并关闭对应的端口
  20. c语言宏定义#define

热门文章

  1. python appium增加方法
  2. python3+selenium3.13的简单操作
  3. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(六)GameplayEffect的级别设置
  4. PHP PDO 预处理语句与存储过程
  5. iOS 基础
  6. AFNetworkingErrorDomain 错误解决方法
  7. javascript变量作用域 — 全局变量
  8. web.py尝试性学习!
  9. Zookeeper 介绍翻译
  10. redhat 7安装CentOS 7 yum源