Asp.net通过Jquery操作WebService进行Ajax读写
一说到开始,我们当然需要项目。
首先,创建一个Asp.net Web 应用,然后新增一个名称为“Web 服务”的文件,也就是后缀名为".asmx"的文件,然后需要进行配置一下,在Web.Config中加入如下配置节点:
在HttpHandlers节点中,需要注册:
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
然后需要在System.Web下注册WebServices节点:
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>
配置完毕后,下面开始进行具体的讲解。
1.利用Get方式进行数据读写操作
首先,前台,我们代码如下:
$(document).ready(function () {
$("#Button1").click(function () {
$.ajax({
url: "Ajax/WebService1.asmx/HelloWorld",
type: "get",
data: "name=John&location=Boston",
success: function (result) {
$("#test").html(result.text);
},
error: function (data) {
alert(data.value);
}
});
});
});
后台,我们的代码如下:
using System.Web.Services;
using System.Threading; namespace Nxt.Web.Ajax
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{ [WebMethod]
public string HelloWorld()
{
Thread.Sleep();
return this.Context.Request.QueryString["name"];
}
}
}
得到的结果如我们预料,服务器端返回了“John”。
2.利用Post方式进行数据读写操作。
首先是前端代码:
$(document).ready(function () {
$("#Button1").click(function () {
$.ajax({
url: "Ajax/WebService2.asmx/HelloWorld",
type: "post",
contentType: "application/json", //from backend
dataType: "json", // send to backend
data: '{"name":"test"}',
success: function (result) {
$("#test").html(result.d);
},
error: function (data) {
//alert(data.value);
}
});
});
});
然后是后端的处理过程,在前端代码中,我们可以看到,我们通过contentType: "application/json",表明后台传送到前台的是JSON格式的数据。 而通过dataType: "json",则表明我们往后端传送的也是json类型的数据。
using System.Web.Services;
using System.Threading; namespace Nxt.Web.Ajax
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class WebService2 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(string name)
{
Thread.Sleep();
return name;
}
}
}
这样,我们通过Post方式得到了预期的结果。
这里我需要特别说明的是,当用json数据当做参数通过Post方式传入后台的时候,后台的参数名称可以与前台保持一致。
那么我们后台取值的时候,直接把参数拿过来用就行了。在例子里,我的json数据为:{"name":"test"},那么在后台,我需要获取的值,就保存在了参数 string name中了。
直接拿过来用就行了。
3.直接操作后台返回的List对象
前台代码如下:
$(document).ready(function () {
$("#Button1").click(function () {
$.ajax({
url: "Ajax/WebService2.asmx/GetList",
type: "post",
contentType: "application/json", //from backend
dataType: "json", // send to backend
data: '{"i":"10"}',
success: function (result) {
$(result.d).each(function (value) {
$("#test").append(this.toString()+" ");
});
},
error: function (data) {
//alert(data.value);
}
});
});
});
后台代码如下:
[WebMethod]
public List<int> GetList(int i)
{
List<int> list = new List<int>();
do{
list.Add(i);
i--;
}while(i>);
return list;
}
最后,屏幕上打印出了我们需要的数据: 10 9 8 7 6 5 4 3 2 1。
4.直接操作后台返回类对象
前台:
$(document).ready(function () {
$("#Button1").click(function () {
$.ajax({
url: "Ajax/WebService2.asmx/GetModel",
type: "post",
contentType: "application/json", //from backend
dataType: "json", // send to backend
data: '{}',
success: function (result) {
$(result.d).each(function (value) {
debugger;
$("#test").append(this["UserID"].toString() + " " + this["UserName"].toString() + " " + this["UserAddr"].toString());
});
},
error: function (data) {
debugger;
//alert(data.value);
}
});
});
});
后台代码:
[WebMethod]
public Common.TestModel GetModel()
{
return new Common.TestModel { UserID = , UserName = "nxt", UserAddr = "beijing" };
}
5.直接操作返回的dataset数据集
前端代码:
$(document).ready(function () {
$("#Button1").click(function () {
$.ajax({
url: "Ajax/WebService2.asmx/GetDataSet",
type: "post",
dataType: "xml", // send to backend
data: '{}',
success: function (result) {
try {
$(result).find("Table1").each(function () {
$("#test").append($(this).find("ID").text() + " " + $(this).find("Value").text());
});
}
catch (e) {
alert(e);
return;
}
},
error: function (data) {
//alert(data.value);
}
});
});
});
后端代码:
[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"] = "scy";
dr["Value"] = "河南理工大学";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = "scy1";
dr["Value"] = "河南理工大学1";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
return ds;
}
得到的结果是:scy 河南理工大学scy1 河南理工大学1
符合预期。
最后加一个loading效果的特效,以便备忘:
<style type="text/css">
#loading
{
position:absolute;
top:50%;
left:50%;
}
</style>
$(document).ready(function () {
$('#loading').ajaxStart(function () {
$(this).html("<img src='Images/loading.gif'>").show();
}).ajaxStop(function () {
$(this).hide();
});
});
Asp.net通过Jquery操作WebService进行Ajax读写的更多相关文章
- ASP.net jQuery调用webservice返回json数据的一些问题
之前寒假时,试着使用jQuery写了几个异步请求demo, 但是那样是使用的webform普通页面,一般应该是用 webservice 居多. 最近写后台管理时,想用异步来实现一些信息的展示和修改, ...
- jquery操作ajax返回的页面元素
这两天工作不忙,正好从朋友那里拿到一个某个应用的开发文档,相关数据放在了mongodb里,自己电脑可以本地开启服务器然后通过给的借口来获取数据.由于这是一个比较大比较全的一个完整项目,也没有那么多经历 ...
- jQuery框架-2.jQuery操作DOM节点与jQuery.ajax方法
一.jQuery操作DOM 内部插入操作: append(content|fn):向每个匹配的元素内部追加内容. prepend(content):向每个匹配的元素内部前置内容. 外部插入操作: af ...
- 如何构建ASP.NET MVC4&JQuery&AJax&JSon示例
背景: 博客中将构建一个小示例,用于演示在ASP.NET MVC4项目中,如何使用JQuery Ajax. 步骤: 1,添加控制器(HomeController)和动作方法(Index),并为Inde ...
- json数据的jquery操作和asp.net后台操作
jquery操作 json对象创建 var item0={"a":"val1","b":"val2"}; json对象字 ...
- jQuery入门(2)使用jQuery操作元素的属性与样式
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- jQuery调用WebService实现增删改查的实现
第一篇博客,发下我自己写的jQuery调用WebService实现增删改查的实现. 1 <!DOCTYPE html> 2 3 <html xmlns="http://ww ...
- Jquery调用Webservice传递Json数组
Jquery由于提供的$.ajax强大方法,使得其调用webservice实现异步变得简单起来,可以在页面上传递Json字符串到Webservice中,Webservice方法进行业务处理后,返回Js ...
- 通过jQuery或ScriptManager以Ajax方式访问服务
1.客户端和服务端 服务端对外提供服务时,可以通过handler或者webservice.handler比较轻便,但是难以对外公开,只有程序员自己知道它到底做了些什么工作.webservice可以将服 ...
随机推荐
- C语言中Static和Const关键字的的作用
程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中. 1.作用于变量: 用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块 ...
- Objective-C的IO流
- eclipse执行单元测试报CreateProcess error=87的解决方法
原因是classpath的路径过长导致,在网上看了很多文章,发现解决方法有2种: 1.更改项目路径 或者 maven本地库的路径,减少classpath的深度. 2.由于这是eclipse自身的bug ...
- mysql 批量更新与批量更新多条记录的不同值实现方法
批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 代码如下: UPDATE mytable SET myfield = 'value' WHERE other_field = ...
- 记录JVM垃圾回收算法
垃圾回收算法可以分为三类,都基于标记-清除(复制)算法: Serial算法(单线程) 并行算法 并发算法 JVM会根据机器的硬件配置对每个内存代选择适合的回收算法,比如,如果机器多于1个核,会对年轻代 ...
- Entity Framework中的Identity map和Unit of Work模式
阅读目录: 一.什么是Identity map模式 二.关于Identity map模式的验证示例 三.Unit of Work 模式 四.总结和注意的问题 一,什么是Identity map模式 I ...
- 深入剖析jsonp跨域原理
在项目中遇到一个jsonp跨域的问题,于是仔细的研究了一番jsonp跨域的原理.搞明白了一些以前不是很懂的地方,比如: 1)jsonp跨域只能是get请求,而不能是post请求: 2)jsonp跨域的 ...
- spring中的 classpath* 存在可移植性问题
classpath* 的可移植性问题,许多人都应该遇到过了.下面就是一个例子(使用的是spring4.1.5和mybatis3.2.8): <bean id="sqlSessionFa ...
- JSON、使用JSON进行数据交换的基础和原理
1. JSON 1.1. JSON 1.1.1. 什么是JSON JSON即Javascript对象表示法,是一种现在主流的数据交换格式.之所以应用广泛还是由其简单易读所决定的. 简单,只有六种类型的 ...
- 修改mysql默认字符集的方案
mysql默认字符集能否进行修改呢?答案是肯定的,下面就将教您两种修改mysql默认字符集的方法,希望对您学习mysql默认字符集方面能有所启迪. (1) 最简单的修改方法,就是修改mysql的my. ...