各种AJAX方法的使用比较(2)

来源:互联网 发布:打码网站源码 编辑:程序博客网 时间:2024/05/20 08:27

本文收集了在ASP.NET平台上,一些具体代表性的AJAX开发方法,我将用实际的示例代码来演示如何使用它们,让您感受AJAX的进化历程,同时也希望将一些优秀的AJAX开发方法介绍给您。

第二代技术:jQuery直接调用WebService

随意jQuery前端类库的流行,另一种新的开发方法也开始流行起来了。

HTTP调用本来是个很简单很透明的技术,只要指定一个URL,构造一个请求体就可以了,前端代理脚本的方法将这个过程封装了起来,由于它的封装制造了耦合并限制前端的发展。新的AJAX技术只能突破这个限制,舍弃这些代理脚本,直接调用后端代码。

下面的示例代码还是基于前面的示例,唯独不同的是:不是需要代理类,现在是直接调用服务端。

由于后端的服务代码没有改变,我也就不再贴出它们了,而且页面也不需要再添加什么引用,我们就直接看前端代码好了:

  1. $.ajax({  
  2.     type:"POST", url: "/WebService1.asmx/Add",   
  3.     contentType:"application/json",  
  4.     data:"{a: 1, b: 2}",  
  5.     dataType:'json',  
  6.     success:function(result){                      
  7.         $("#output").val(result.d);  
  8.     }  
  9. });  

这段代码也能调用服务端的Add方法。

由于服务端采用JSON数据格式,所以需要在客户端多指定一些请求头,而这些事情以前是由代理脚本完成的。虽然现在的代码稍微多一点,但是耦合没有了,更便于提取一些公用代码了。

事实上,如果您一直用这种方法调用WebService,那么jQuery提供了设置默认参数的功能,我们可以利用这个特性减少代码量。

还是再来看一下前面那个复杂的参数类型的前端调用代码吧:

  1. var customer = {Name: $("#txtName").val(),   
  2.                 Age: $("#txtAge").val(),   
  3.                 Address: $("#txtAddress").val(),   
  4.                 Tel: $("#txtTel").val(),   
  5.                 Email: $("#txtEmail").val()};  
  6. var jsonStirng = $.toJSON( {customer:  customer} );  
  7.  
  8. $.ajax({  
  9.     type:"POST", url: "/WebService1.asmx/AddCustomer",   
  10.     contentType:"application/json",  
  11.     data: jsonStirng,  
  12.     dataType:'json',  
  13.     success:function(result){  
  14.         $("#output").val(result.d);  
  15.     }  
  16. });  

主要的代码还是一样的,集中在获取调用参数,但是要转成JSON格式。

再次一次提醒:不要老是盯着要指定一大堆的jQuery参数,它们可以通过设置默认值的方式解决。

我之所以现在不想让它们消失,是因为后面还有更好的方法,先留着它们吧。

说明:这种方法不仅可以用于调用WebService,也可以调用WCF (basicHttpBinding),毕竟它们都使用HTTP协议。不过,WCF还有一堆烦人的配置要设置,但这不是jQuery的问题,这是服务端框架的缺陷。