jQuery调用WebService的实现代码


Posted in Javascript onJune 19, 2011

一个例子说尽:
1、.aspx中:

<div class="button" id="btn1"><a href="#">HelloWorld</div> 
<div class="button" id="btn2"><a href="#">传入参数</a></div> 
<div class="button" id="btn3"><a href="#">返回集合</a></div> 
<div class="button" id="btn4"><a href="#">返回复合类型</a></div> 
<div class="button" id="btn5"><a href="#">返回DataSet(XML)</a></div> 
</div><div id="loading">服务器处理中,请稍后</div> 
<div id="dictionary"></div>

2、WebService中:
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
[System.Web.Script.Services.ScriptService] //如果要用jquery调用WebService则取消前面的注释 
public class WebService : System.Web.Services.WebService 
{ 
public WebService() 
{ 
//如果使用设计的组件,请取消注释以下行 
//InitializeComponent(); 
} 
[WebMethod] 
public string HelloWorld() 
{ 
return "Hello World"; 
} 
[WebMethod] 
public string GetWish(string value1, string value2, string value3, int value4) 
{ 
return string.Format("祝您在{3}年里 {0}、{1}、{2}", value1, value2, value3, value4); 
} 
[WebMethod] 
public List<int> GetArray(int i) 
{ 
List<int> list = new List<int>(); 
while (i >= 0) 
{ 
list.Add(i--); 
} 
return list; 
} 
[WebMethod] 
public Class1 GetClass() 
{ 
Class1 a = new Class1(); 
a.ID = "1"; 
a.Value = "牛年大吉"; 
return a; 
} 
[WebMethod] 
public DataSet GetDataSet() 
{ 
DataSet ds = new DataSet(); 
DataTable dt = new DataTable("Table1"); 
dt.Columns.Add("ID", Type.GetType("System.String")); 
dt.Columns.Add("Value", Type.GetType("System.String")); 
DataRow dr = dt.NewRow(); 
dr["ID"] = "1"; 
dr["Value"] = "新年快乐"; 
dt.Rows.Add(dr); 
dr = dt.NewRow(); 
dr["ID"] = "2"; 
dr["Value"] = "万事如意"; 
dt.Rows.Add(dr); 
ds.Tables.Add(dt); 
return ds; 
} 
} 
//自定义的类,只有两个属性 
public class Class1 
{ 
public string ID { get; set; } 
public string Value { get; set; } 
}

3、JS中:
<script language="javascript" type="text/javascript"> 
//无参数 
$(function() { 
$("#btn1").click(function() { 
$.ajax({ 
type: "POST", //访问webservice使用POST方式请求 
contentType: "application/json;utf-8", //WebService会返回Json类型 
url: "WebService.asmx/HelloWorld", //调用WebService方法 
data: "{}", //要传递的参数,没有传参时,也一定要写上 
dataType: "json", 
success: function(result) { 
result =result.d;//返回d后面的json内容 
$("#dictionary").append(result); 
} 
}); 
}); 
}); 
//有参数 
$(function() { 
$("#btn2").click(function() { 
$.ajax({ 
type: "POST", 
contentType: "application/json;utf-8", 
url: "WebService.asmx/GetWish", 
data: "{value1:'万事如意',value2:'心想事成',value3:'财运滚滚',value4:2009}", 
dataType: "json", 
success: function(result) { 
result =result.d; 
$("#dictionary").html(result); 
} 
}); 
}); 
}); 
//返回集合 
$(function() { 
$("#btn3").click(function() { 
$.ajax({ 
type: "POST", 
contentType: "application/json;utf-8", 
url: "WebService.asmx/GetArray", 
data: "{i:10}", 
dataType: "json", 
success: function(result) { 
result =result.d; 
$(result).each(function() { 
$("#dictionary").append(this.toString() + " "); 
}); 
} 
}); 
}); 
}); 
//返回实体 
$(function() { 
$("#btn4").click(function() { 
$.ajax({ 
type: "POST", 
contentType: "application/json;utf-8", 
url: "WebService.asmx/GetClass", 
data: "{}", 
dataType: 'json', 
success: function(result) { 
result =result.d; 
$("#dictionary").append(result.ID + " " + result.Value); 
} 
}); 
}); 
}); 
//返回DataSet(XML) 
$(document).ready(function() { 
$('#btn5').click(function() { 
$.ajax({ 
type: "POST", 
url: "WebService.asmx/GetDataSet", 
data: "{}", 
dataType: 'xml', //返回的类型为XML ,和前面的Json,不一样了 
success: function(result) { 
//演示一下捕获 
try { 
$(result).find("Table1").each(function() { 
$('#dictionary').append($(this).find("ID").text() + " " + $(this).find("Value").text()); 
}); 
} 
catch (e) { 
alert(e); return; 
} 
}, 
error: function(result, status) { //如果没有上面的捕获出错会执行这里的回调函数 
if (status == 'error') { 
alert(status); 
} 
} 
}); 
}); 
}); 
//Ajax 为用户提供反馈,利用ajaxStart和ajaxStop 方法,演示ajax跟踪相关事件的回调,他们两个方法可以添加给jQuery对象在Ajax前后回调 //但对与Ajax的监控,本身是全局性的 
$(document).ready(function() { 
$('#loading').ajaxStart(function() { 
$(this).show(); 
}).ajaxStop(function() { 
$(this).hide(); 
}); 
}); 
// 鼠标移入移出效果,多个元素的时候,可以使用“,”隔开 
$(document).ready(function() { 
$('div.button').hover(function() { 
$(this).addClass('hover'); 
}, function() { 
$(this).removeClass('hover'); 
}); 
}); 
</script>

4、效果
jQuery调用WebService的实现代码
Javascript 相关文章推荐
Hutia 的 JS 代码集
Oct 24 Javascript
静态的动态续篇之来点XML
Dec 23 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
Mar 15 Javascript
javascript作用域和闭包使用详解
Apr 25 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
Dec 25 jQuery
使用Vue开发一个实时性时间转换指令
Jan 17 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
Aug 19 Javascript
JS使用Date对象实时显示当前系统时间简单示例
Aug 23 Javascript
JS实现计算小于非负数n的素数的数量算法示例
Feb 26 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
May 14 Javascript
非常棒的10款jQuery 幻灯片插件
Jun 14 #Javascript
在jquery中处理带有命名空间的XML数据
Jun 13 #Javascript
jquery 与NVelocity 产生冲突的解决方法
Jun 13 #Javascript
用Juery网页选项卡实现代码
Jun 13 #Javascript
读jQuery之三(构建选择器)
Jun 11 #Javascript
读jQuery之二(两种扩展)
Jun 11 #Javascript
读jQuery之一(对象的组成)
Jun 11 #Javascript
You might like
PHP4中实现动态代理
2006/10/09 PHP
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python 获取et和excel的版本号
2009/04/09 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
大学毕业后的十年规划
2014/01/07 职场文书
保安拾金不昧表扬信
2014/01/15 职场文书
商务考察邀请函范文
2014/01/21 职场文书
丑小鸭教学反思
2014/02/03 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL