jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码


Posted in Javascript onApril 27, 2011

ws.aspx 代码

<!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></title> 
<script src="jquery.js" type="text/javascript"></script> 
<style type="text/css"> 
.hover 
{ 
cursor: pointer; /*小手*/ 
background: #ffc; /*背景*/ 
} 
.button 
{ 
width: 150px; 
float: left; 
text-align: center; 
margin: 10px; 
padding: 10px; 
border: 1px solid #888; 
} 
#dictionary 
{ 
text-align: center; 
font-size: 18px; 
clear: both; 
border-top: 3px solid #888; 
} 
#loading 
{ 
border: 1px #000 solid; 
background-color: #eee; 
padding: 20px; 
margin: 100px 0 0 200px; 
position: absolute; 
display: none; 
} 
#switcher 
{ 
} 
</style> 
<script type="text/javascript"> 
//无参数调用 
$(document).ready(function() { 
$('#btn1').click(function() { 
$.ajax({ 
type: "POST", //访问WebService使用Post方式请求 
contentType: "application/json", //WebService 会返回Json类型 
url: "WebService1.asmx/HelloWorld", //调用WebService的地址和方法名称组合 ---- WsURL/方法名 
data: "{}", //这里是要传递的参数,格式为 data: "{paraName:paraValue}",下面将会看到 
dataType: 'json', 
success: function(result) { //回调函数,result,返回值 
$('#dictionary').append(result.d); 
} 
}); 
}); 
}); 
//有参数调用 
$(document).ready(function() { 
$("#btn2").click(function() { 
$.ajax({ 
type: "POST", 
contentType: "application/json", 
url: "WebService1.asmx/GetWish", 
data: "{value1:'心想事成',value2:'万事如意',value3:'牛牛牛',value4:2009}", 
dataType: 'json', 
success: function(result) { 
$('#dictionary').append(result.d); 
} 
}); 
}); 
}); 
//返回集合(引用自网络,很说明问题) 
$(document).ready(function() { 
$("#btn3").click(function() { 
$.ajax({ 
type: "POST", 
contentType: "application/json", 
url: "WebService1.asmx/GetArray", 
data: "{i:10}", 
dataType: 'json', 
success: function(result) { 
$(result.d).each(function() { 
//alert(this); 
$('#dictionary').append(this.toString() + " "); 
//alert(result.d.join(" | ")); 
}); 
} 
}); 
}); 
}); 
//返回复合类型 
$(document).ready(function() { 
$('#btn4').click(function() { 
$.ajax({ 
type: "POST", 
contentType: "application/json", 
url: "WebService1.asmx/GetClass", 
data: "{}", 
dataType: 'json', 
success: function(result) { 
$(result.d).each(function() { 
//alert(this); 
$('#dictionary').append(this['ID'] + " " + this['Value']); 
//alert(result.d.join(" | ")); 
}); 
} 
}); 
}); 
}); 
============== 
var aArray = [“sdf”,”dasd”,”dsa”]; //数组$.each(aArray,function(iNum,value){ document.write(“序号:”+iNum+” 值:”+value);});var oObj = {one:1,two:2,three:3};$.each(aArray,function(property,value){ document.write(“属性:”+ property +” 值:”+value);}); 
============================================== 
//返回DataSet(XML) 
$(document).ready(function() { 
$('#btn5').click(function() { 
$.ajax({ 
type: "POST", 
url: "WebService1.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> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div id="switcher"> 
<h2> 
jQuery 的WebServices 调用</h2> 
<div class="button" id="btn1"> 
HelloWorld</div> 
<div class="button" id="btn2"> 
传入参数</div> 
<div class="button" id="btn3"> 
返回集合</div> 
<div class="button" id="btn4"> 
返回复合类型</div> 
<div class="button" id="btn5"> 
返回DataSet(XML)</div> 
</div> 
<div id="loading"> 
服务器处理中,请稍后。 
</div> 
<div id="dictionary"> 
</div> 
</form> 
</body> 
</html>

WebService1.asmx.cs
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 
using System.Data; 
namespace jQuery.Learning 
{ 
/// <summary> 
/// WebService1 的摘要说明 
/// </summary> 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
[System.Web.Script.Services.ScriptService] 
public class WebService1 : System.Web.Services.WebService 
{ 
/// <summary> 
/// 无参数 
/// </summary> 
/// <returns></returns> 
[WebMethod] 
public string HelloWorld() 
{ 
return "Hello World "; 
} 
/// <summary> 
/// 带参数 
/// </summary> 
/// <param name="value1"></param> 
/// <param name="value2"></param> 
/// <param name="value3"></param> 
/// <param name="value4"></param> 
/// <returns></returns> 
[WebMethod] 
public string GetWish(string value1, string value2, string value3, int value4) 
{ 
return string.Format("祝您在{3}年里 {0}、{1}、{2}", value1, value2, value3, value4); 
} 
/// <summary> 
/// 返回集合 
/// </summary> 
/// <param name="i"></param> 
/// <returns></returns> 
[WebMethod] 
public List<int> GetArray(int i) 
{ 
List<int> list = new List<int>(); 
while (i >= 0) 
{ 
list.Add(i--); 
} 
return list; 
} 
/// <summary> 
/// 返回一个复合类型 
/// </summary> 
/// <returns></returns> 
[WebMethod] 
public Class1 GetClass() 
{ 
return new Class1 { ID = "1", Value = "牛年大吉" }; 
} 
/// <summary> 
/// 返回XML 
/// </summary> 
/// <returns></returns> 
[WebMethod] 
public DataSet GetDataSet() 
{ 
DataSet ds = new DataSet(); 
DataTable dt = new DataTable(); 
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; } 
} 
}
Javascript 相关文章推荐
Javascript 兼容firefox的一些问题
May 21 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
Apr 06 Javascript
原生javascript实现addClass,removeClass,hasClass函数
Feb 25 Javascript
详细谈谈javascript的对象
Jul 31 Javascript
AngularJS实现表单验证功能
Jan 09 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
Mar 27 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
Apr 16 Javascript
深入理解Vue.js源码之事件机制
Sep 27 Javascript
JS实现滑动插件
Jan 15 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
Jul 17 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
Sep 07 Javascript
Antd中单个DatePicker限定时间输入范围操作
Oct 29 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
Apr 27 #Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
Apr 27 #Javascript
javascript中的继承实例代码
Apr 27 #Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
Apr 27 #Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
Apr 27 #Javascript
js实时监听文本框状态的方法
Apr 26 #Javascript
Javascript中的window.event.keyCode使用介绍
Apr 26 #Javascript
You might like
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
python批量导出导入MySQL用户的方法
2013/11/15 Python
Python中基本的日期时间处理的学习教程
2015/10/16 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
python英语单词测试小程序代码实例
2019/09/09 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
接口的多继承会带来哪些问题
2015/08/17 面试题
C#基础面试题
2016/10/17 面试题
项目合作计划书
2014/01/09 职场文书
就业意向书
2014/07/29 职场文书
项目经理岗位职责
2015/01/31 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
情人节单身感言
2015/08/03 职场文书
物业保洁员管理制度
2015/08/05 职场文书
在Python中如何使用yield
2021/06/07 Python
公历12个月名称的由来
2022/04/12 杂记
字节飞书面试promise.all实现示例
2022/06/16 Javascript