【javaweb简单教程】12.jQuery的Ajax交互扩展和jQuery让渡$操作符

12.jQuery的Ajax交互扩展

jQuery的Ajax方法

  • $.ajax()
  • $.get()
  • $.post()
  • $.getJSON()
  • .load()
  • ……

$.get()

简介
$.get( url [, data] [, success] [, dataType] );
  • 参数说明
参 数类 型说 明
urlString必选,发送请求的地址
dataPlainObject 或 String发送到服务器的数据
successFunction( PlainObject result, String textStatus, jqXHR jqxhr )请求成功后调用的函数 参数result:可选,由服务器返回的数据
dataTypeString预期服务器返回的数据类型,包括:XML、HTML、Script、JSON、JSONP、text
用法
  • 使用$.get() 实现异步交互
$.get( url, data, function( result ) {
	// 省略将服务器返回的数据显示到页面的代码
} );
  • 以上代码等价于
$.ajax( {
	"url"           : url,
	"data"        : data,
	"type"        : "get",	//////////////////////////////区别在这
	"success" : function( result ) {
		   // 省略代码
	      }
} );

$.post()

简介
$.post( url [, data] [, success] [, dataType] );
  • 参数说明
参 数类 型说 明
urlString必选,发送请求的地址
dataPlainObject 或 String发送到服务器的数据
successFunction( PlainObject result, String textStatus, jqXHR jqxhr )请求成功后调用的函数 参数result:可选,由服务器返回的数据
dataTypeString预期服务器返回的数据类型,包括:XML、HTML、Script、JSON、JSONP、text
用法
  • 使用$.post() 实现异步交互
$.post( url, data, function( result ) {
	// 省略将服务器返回的数据显示到页面的代码
} );
  • 以上代码等价于
$.ajax( {
	"url"           : url,
	"data"        : data,
	"type"        : "post",	  //////////////////////////////区别在这
	"success" : function( result ) {
		   // 省略代码
	      }
} );

$.getJSON()

简介
$.getJSON( url [, data] [, success] );
  • 参数说明
参 数类 型说 明
urlString必选,发送请求的地址
dataPlainObject 或 String发送到服务器的数据
successFunction( PlainObject result, String textStatus, jqXHR jqxhr )请求成功后调用的函数 参数result:可选,由服务器返回的数据
用法
  • 使用$.getJSON() 实现异步交互
$.getJSON( url, data, function( result ) {
	// 省略将服务器返回的数据显示到页面的代码
} );
  • 以上代码等价于
$.ajax( {
	"url"            : url,
	"data"         : data,
	"type"         : "get",		//$.getJSON()方法只能以GET方式发送请求
	"dataType" : "json",	//////////////////////////////区别在这
	"success"   : function( result ) {
		   // 省略代码
	      }
} );

load()

简介
$( selector ).load( url [, data] [, complete] );
  • 参数说明
参 数类 型说 明
urlString必选,发送请求的地址
dataPlainObject 或 String发送到服务器的数据
completeFunction( String responseText, String textStatus, jqXHR jqxhr )每个匹配元素设置完内容后都会触发的函数 参数responseText:可选,服务器返回的数据
  • 注意;
    • .load()不是全局函数,而是针对与选择器匹配的元素执行
    • 包含匿名回调函数,自动将返回值设置为匹配元素的HTML内容
用法
  • 使用.load()实现异步交互
$( "#opt_area>ul" ).load( url, data );
  • 以上代码等价于
$.get( url, data, function( responseText ) {
	$( "#opt_area>ul" ).html( responseText );
} );
  • 注意:
    • 默认使用GET方式请求,除非data参数是一个对象,则使用POST方式

基于表单数据的Ajax请求

  • 使用jQuery提供的方法简化处理
    • .serializeArray()
    • $.param()

.serializeArray()

  • 检测一组表单元素中的有效控件
    • 没有被禁用
    • 必须有name属性
    • 选中的checkbox或radio
    • 触发提交事件的submit按钮
    • file元素不会被序列化
  • 将有效控件序列化为JSON对象数组
    • 包含name和value两个属性

$.param()

  • 将由. serializeArray()生成的对象数组序列化成请求字符串的形式
nid=nid的值&cauthor=cauthor的值&cip=cip的值
  • jQuery还提供了.serialize()方法。
    • .serialize()内部使用$.param()对.serializeArray()做了一个简单包装。不需要中间环节时,可以更简便地完成表单数据的序列化

FastJSON

简介

  • 随着JSON的广泛使用,在服务器端生成JSON字符串成了一件麻烦的工作,效率低且易出错
  • FastJSON
    • 一个性能很好的、Java实现的JSON解析器和生成器
    • 将Java对象序列化成JSON字符串
    • 将JSON字符串反序列化得到Java对象
  • https://github.com/alibaba/fastjson/releases

FastJSON API

  • 入口类:com.alibaba.fastjson.JSON
方 法说 明
public static String toJSONString ( Object object )将Java对象序列化成JSON字符串
public static String toJSONString ( Object object, boolean prettyFormat )prettyFormat为true时生成带格式的JSON字符串
public static String toJSONString ( Object object, SerializerFeature… features )可以通过参数features指定更多序列化规则
public static String toJSONStringWithDateFormat ( Object object, String dateFormat, SerializerFeature… features )可以通过参数dateFormat指定日期类型的输出格式
  • 枚举类型 SerializerFeature 定义了多种序列化属性
枚 举 值说 明
QuoteFieldNames为字段名加双引号,默认即使用
WriteMapNullValue输出值为null的字段,默认不输出
WriteNullListAsEmpty将值为null的List字段输出为[ ]
WriteNullStringAsEmpty将值为null的String字段输出为“”
WriteNullNumberAsZero将值为null的数值字段输出为0
WriteNullBooleanAsFalse将值为null的Boolean字段输出为false
SkipTransientField忽略transient字段,默认即忽略
PrettyFormat格式化JSON字符串,默认不格式化
  • 示例
// 包含值为 null 的字段,数值为 null  输出0,String 为 null 输出“”
String  strJSON = JSON.toJSONString ( javaObject,
                                     SerializerFeature.WriteMapNullValue,
                                     SerializerFeature.WriteNullNumberAsZero,
                                     SerializerFeature.WriteNullStringAsEmpty );

jQuery让渡$操作符

  • jQuery不是唯一使用 $ 的脚本库,项目中有其他同样使用 $ 的脚本库时就会引起冲突
//示例

// Prototype的 $ 会覆盖jQuery的 $
<script type="text/javascript" src="../js/jquery-1.12.4.min.js" />
<script type="text/javascript" src="../js/prototype.js" />
    
//或者
    
// jQuery的 $ 会覆盖Prototype的 $
<script type="text/javascript" src="../js/prototype.js" />
<script type="text/javascript" src="../js/jquery-1.12.4.min.js" />
  • jQuery定义了jQuery.noConflict()方法,放弃对$的使用权,以免与其他脚本库冲突
//示例

jQuery.noConflict(); // 让渡$使用权,后续jQuery代码使用jQuery代替$
jQuery( document ).ready();

//或者重新指定一个替代符号:
var  $j = jQuery.noConflict(); // 让渡$使用权,并指定用 $j 代替$
$j( document ).ready();
  • 改变了jQuery的编码风格,烦琐且不利于重用已有代码
//示例

jQuery.noConflict(); // 让渡$使用权,其他脚本库可以使用$
jQuery( document ).ready( function( $ ) {
    // 在这里继续使用$编写jQuery代码
    $( "#show" ).click();
} );

//或者
jQuery.noConflict(); // 让渡$使用权,其他脚本库可以使用$
( function( $ ) {
    // 在这里继续使用$编写jQuery代码
    $( document ).ready( function() {
        $( "#show" ).click();
    } );
} )( jQuery );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tuerlechat,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值