`
windywindy
  • 浏览: 170695 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jquery中的ajax (二)

    博客分类:
  • js
阅读更多
jQuery提供了一些相关函数能够辅助Ajax函数.

1. jQuery.ajaxSetup( options )设置全局 AJAX 默认选项。
讲解:
有时我们的希望设置页面上所有Ajax属性的默认行为.那么就可以使用此函数设置options选项, 此后所有的Ajax请求的默认options将被更改.

options是一个对象, 可以设置的属性请此连接:
http://docs.jquery.com/Ajax/jQuery.ajax#toptions

比如在页面加载时, 我使用下面的代码设置Ajax的默认option选项:
$.ajaxSetup({
                url: "productOper.do?method=test",
                data: { "item": "test" },
                global: false,
                type: "POST",
                success: function(data, textStatus) { $("#divResult").html(data); }
            });

上面的代码设置了一个Ajax请求需要的基本数据: 请求url, 参数, 请求类型, 成功后的回调函数.

此后我们可以使用无参数的get(), post()或者ajax()方法发送ajax请求.完整的示例代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!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>
		<title>ajax</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta name="robots" content="noindex, nofollow" />
		<script type="text/javascript" src="js/jquery.js"></script>
		<script type="text/javascript">
			$(document).ready(function()
			        {
			            $.ajaxSetup({
			                url: "productOper.do?method=test",
			                data: { "item": "item1" },
			                global: false,
			                type: "POST",
			                success: function(data, textStatus) { $("#divResult").html(data); }
			            });
			
			            $("#btnAjax").click(function(event) { $.ajax(); });
			            $("#btnGet").click(function(event) { $.get(); });
			            $("#btnPost").click(function(event) { $.post(); });
			            $("#btnGet2").click(function(event) { $.get("productOper.do?method=test2",{ "item": "other" }); });
			    });
		</script>
	</head>
	<body>
		<s:form>
		<ul id="nav-one">
			<li>
				<a id="item" href="#item1">item 1</a>
			</li>
		</ul>
		 <button id="btnAjax">不传递参数调用ajax()方法</button><br />
	    <button id="btnGet">不传递参数调用get()方法</button><br />
	    <button id="btnPost">不传递参数调用post()方法</button><br />
	    <button id="btnGet2">传递参数调用get()方法, 使用全局的默认回调函数</button><br />
	    <br />
	    <div id="divResult"></div>
			<s:submit id="testAjax" value="提交"></s:submit>
		</s:form>
	
	</body>
</html>

注意当使用get()或者post()方法时, 除了type参数将被重写为"GET"或者"POST"外, 其他参数只要不传递都是使用默认的全局option. 如果传递了某一个选项, 比如最后一个按钮传递了url和参数, 则本次调用会以传递的选项为准. 没有传递的选项比如回调函数还是会使用全局option设置值.

2.serialize()序列表表格内容为字符串,用于 Ajax 请求。
讲解:
序列化最常用在将表单数据发送到服务器端时. 被序列化后的数据是标准格式, 可以被几乎所有的而服务器端支持.

为了尽可能正常工作, 要求被序列化的表单字段都有name属性, 只有一个eid是无法工作的.

像这样写name属性:
<input id="email" name="email" type="text" />


serialize()函数将要发送给服务器的form中的表单对象拼接成一个字符串. 便于我们使用Ajax发送时获取表单数据. 这和一个From按照Get方式提交时, 自动将表单对象的名/值放到url上提交差不多.
事例代码:
 <s:form>
	    <select name="single">
		    <option>Single</option>
		    <option>Single2</option>
		</select>
		<select name="multiple" multiple="multiple">
		    <option selected="selected">Multiple</option>
		    <option>Multiple2</option>
		    <option selected="selected">Multiple3</option>
		 </select><br/>
		  <input type="checkbox" name="check" value="check1"/> check1
		  <input type="checkbox" name="check" value="check2" checked="checked"/> check2
		  <input type="radio" name="radio" value="radio1" checked="checked"/> radio1
		  <input type="radio" name="radio" value="radio2"/> radio2
			<s:submit id="testAjax" value="提交" onclick="alert($('form').serialize())"></s:submit>
		</s:form>

结果是:single=Single&param=Multiple&param=Multiple3&check=check2&radio=radio1

3.serializeArray():序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据。
$("form").serializeArray()

注意,此方法返回的是JSON对象而非JSON字符串。需要使用插件或者第三方库进行字符串化操作。
在JSON官网上没有找到合适的JSON编译器, 最后选用了jquery.json这个jQuery插件:
http://code.google.com/p/jquery-json/
使用起来异常简单:
var thing = {plugin: 'jquery-json', version: 2.2};

var encoded = $.toJSON(thing);              //'{"plugin":"jquery-json","version":2.2}'
var name = $.evalJSON(encoded).plugin;      //"jquery-json"
var version = $.evalJSON(encoded).version;  // 2.2

使用serializeArray( ) 再配合 $.toJSON 方法, 我们可以很方便的获取表单对象的JSON, 并且转换为JSON字符串:
$("#results").html( $.toJSON( $("form").serializeArray() ));

结果为:
[{"name": "single", "value": "Single"}, {"name": "param", "value": "Multiple"}, {"name": "param", "value": "Multiple3"}, {"name": "check", "value": "check2"}, {"name": "radio", "value": "radio1"}]


4.在jQuery.ajaxSetup( options ) 中的options参数属性中, 有一个global属性:
说明:是否触发全局的Ajax事件.

这个属性用来设置是否触发全局的Ajax事件. 全局Ajax事件是一系列伴随Ajax请求发生的事件.主要有如下事件:
名称 说明
ajaxComplete( callback ) AJAX 请求完成时执行函数
ajaxError( callback ) AJAX 请求发生错误时执行函数
ajaxSend( callback ) AJAX 请求发送前执行函数
ajaxStart( callback ) AJAX 请求开始时执行函数
ajaxStop( callback ) AJAX 请求结束时执行函数
ajaxSuccess( callback ) AJAX 请求成功时执行函数

用一个示例讲解各个事件的触发顺序:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!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>
		<title>ajax</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta name="robots" content="noindex, nofollow" />
		<script type="text/javascript" src="js/jquery.js"></script>
		<script type="text/javascript">
		        $(document).ready(function()
		        {
		
		            $("#btnAjax").bind("click", function(event)
		            {
		                $.get("productOper.do?method=test2");
		            })
		
		            $("#divResult").ajaxComplete(function(evt, request, settings) { $(this).append('<div>ajaxComplete</div>'); })
		            $("#divResult").ajaxError(function(evt, request, settings) { $(this).append('<div>ajaxError</div>'); })
		            $("#divResult").ajaxSend(function(evt, request, settings) { $(this).append('<div>ajaxSend</div>'); })
		            $("#divResult").ajaxStart(function() { $(this).append('<div>ajaxStart</div>'); })
		            $("#divResult").ajaxStop(function() { $(this).append('<div>ajaxStop</div>'); })
		            $("#divResult").ajaxSuccess(function(evt, request, settings) { $(this).append('<div>ajaxSuccess</div>'); })
		
		        });
		</script>
	</head>
	<body>
		<s:form>
	     <br /><button id="btnAjax">发送Ajax请求</button><br/>
	    <div id="divResult"></div>
		</s:form>
	
	</body>
</html>

结果如图:

我们可以通过将默认options的global属性设置为false来取消全局Ajax事件的触发.
  • 大小: 3.5 KB
分享到:
评论

相关推荐

    ssh+jquery+ajax二级联动

    在这个"ssh+jquery+ajax二级联动"项目中,开发者可能创建了一个简单的Web应用,实现了基于Ajax的二级联动选择功能。这通常在多级下拉菜单或地区选择等场景中常见,例如:省份选择后,城市列表会动态加载更新。 1. *...

    SSH1,JQuery的ajax返回json二维数组处理过程

    在本文中,我们将探讨如何使用SSH1框架与jQuery的AJAX功能来处理JSON二维数组,特别是在实现菜单联动下拉框的场景中。SSH1(Spring、Struts、Hibernate)是Java开发中的一个流行MVC框架组合,而jQuery的AJAX功能则...

    jquery,ajax的几个小例子

    1. **$.ajax()函数**:这是jQuery中最核心的Ajax方法,可以接受多个参数来定制请求。例如,URL、类型(GET或POST)、数据、回调函数等。基本用法如下: ```javascript $.ajax({ url: 'your-url', type: 'GET', ...

    基于jQuery的Ajax聊天室程序

    在这个聊天室程序中,jQuery库被用来简化Ajax的使用,使得开发者能更轻松地实现这一功能。 1. **jQuery**:jQuery是一个快速、简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。在本聊天室...

    Jquery跨域Ajax请求测试

    在"JqueryWebServiceTestDemo"这个示例中,可能包含了完整的前端HTML、CSS和JavaScript文件,以及可能的服务端接口文档或示例代码,用于演示如何在实际项目中运用jQuery进行跨域Ajax请求。通过学习和运行这个示例,...

    jQuery-ajax-用户名异步请求

    在Web开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理以及Ajax交互。本主题聚焦于jQuery中的Ajax功能,特别是如何利用它进行异步用户名验证。Ajax,即Asynchronous JavaScript and ...

    Asp.Net MVC之jQuery与AJAX操作实例

    在Asp.Net MVC框架中,jQuery和AJAX的结合使用极大地提升了用户体验,使得网页能够实现异步数据交互,无需刷新整个页面即可完成数据的增删查改操作。本实例将深入探讨如何在Asp.Net MVC项目中应用jQuery与AJAX。 一...

    jQuery中ajax请求后台返回json数据并渲染HTML的方法

    jQuery中的AJAX请求是一种非常常见的前端异步数据交互方式,它的作用是使得页面无需重新加载即可向服务器请求数据,并将数据动态地加载到页面中。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它...

    Jquery Ajax分页(有实例)

    **jQuery AJAX分页技术详解** 在Web开发中,分页是一种常见的数据展示方式,它能够有效地组织大量数据,提高页面加载速度,优化用户体验。jQuery,一个轻量级、功能丰富的JavaScript库,结合AJAX(异步JavaScript和...

    jquery-ajax实例

    AJAX(异步JavaScript和XML)技术在现代Web开发中扮演着关键角色,而jQuery的ajax方法则提供了简洁的API来实现这一功能。 首先,我们来看`bean - json`的转化。在Web服务中,我们经常需要在服务器端处理Java Bean...

    jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Object.success,但后台能够返回数据,原代码如下: var source=[]; $.ajax({ ...

    jquery的ajax方法

    **jQuery的Ajax方法**是JavaScript库中的核心特性之一,它为开发者提供了简单、高效的数据交互方式,无需刷新页面即可实现异步与服务器进行通信。在Web开发中,jQuery的Ajax功能极大地简化了XMLHttpRequest对象的...

    jQuery+ajax实现三级级联

    在IT行业中,jQuery和ajax是两个非常重要的技术,它们在构建动态、交互性强的Web应用程序时发挥着关键作用。在这个“jQuery+ajax实现三级级联”的实例中,我们主要探讨如何利用这两种技术来创建一个能够逐级联动的...

    基于jquery的ajax对话框

    在网页开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了JavaScript的使用,尤其是在处理DOM操作、事件处理和Ajax交互等方面。"基于jQuery的ajax对话框"是一个利用jQuery实现的功能,它可以在不刷新整个...

    jquery,jquery是Ajax的一个框架

    jQuery 是一个广泛使用的 JavaScript 库,它极大地简化了前端开发中的许多任务,尤其是处理 AJAX(Asynchronous JavaScript and XML)请求。AJAX 是一种在不刷新整个网页的情况下,允许部分网页内容异步更新的技术。...

    jQuery的Ajax实现异步传输List、Map

    在Web开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互。Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下与服务器进行数据交换,极大地提升...

    Struts2+Jquery+Ajax

    在Struts2中,Jquery可以与Ajax结合使用,实现页面的无刷新更新。 Ajax(Asynchronous JavaScript and XML)技术允许前端与后台进行异步通信,无需整个页面刷新,提高了用户体验。在Struts2框架下,我们可以使用...

    jquery+AJAX小小项目

    在Web开发中,jQuery和AJAX是两种非常重要的技术,它们使得前端与后端的数据交互变得更加便捷和高效。本项目主要展示了如何利用jQuery库来实现AJAX的增删改查功能,帮助开发者更好地理解和运用这两种技术。 **一、...

    jquery、ajax学习电子书.zip

    二、jQuery中的Ajax jQuery封装了Ajax功能,提供了易于使用的接口来执行异步请求。使用$.ajax()函数,你可以轻松发起GET、POST以及其他HTTP请求,与服务器进行数据交换,无需关心浏览器的兼容性问题。此外,jQuery还...

Global site tag (gtag.js) - Google Analytics