什么是 AJAX?
AJAX = Asynchronous JavaScript and XML.
AJAX 是一种创建快速动态网页的技术。
AJAX 通过在后台与服务器交换少量数据的方式,允许网页进行异步更新。这意味着有可能在不重载整个页面的情况下,对网页的一部分进行更新。
AJAX 和 jQuery
jQuery 提供了用于 AJAX 开发的丰富函数(方法)库。
通过 jQuery AJAX,使用 HTTP Get 和 HTTP Post,您都可以从远程服务器请求 TXT、HTML、XML 或 JSON。
而且您可以直接把远程数据载入网页的被选 HTML 元素中!
写的更少,做的更多
jQuery 的 load 函数是一种简单的(但很强大的)AJAX 函数。它的语法如下:
$(selector).load(url,data,callback)
请使用 selector 来定义要改变的 HTML 元素,使用 url 参数来指定数据的 web 地址。
亲自试一试
只有当您希望向服务器发送数据时,才需要使用 data 参数。只有当您需要在执行完毕之后触发一个函数时,您才需要使用 callback 参数。
Low Level AJAX
$.ajax(options) 是低层级 AJAX 函数的语法。
$.ajax 提供了比高层级函数更多的功能,但是同时也更难使用。
option 参数设置的是 name|value 对,定义 url 数据、密码、数据类型、过滤器、字符集、超时以及错误函数。
jQuery AJAX 请求
请求 描述
$(selector).load(url,data,callback) 把远程数据加载到被选的元素中
$.ajax(options) 把远程数据加载到 XMLHttpRequest 对象中
$.get(url,data,callback,type) 使用 HTTP GET 来加载远程数据
$.post(url,data,callback,type) 使用 HTTP POST 来加载远程数据
$.getJSON(url,data,callback) 使用 HTTP GET 来加载远程 JSON 数据
$.getScript(url,callback) 加载并执行远程的 JavaScript 文件
(url) 被加载的数据的 URL(地址)
(data) 发送到服务器的数据的键/值对象
(callback) 当数据被加载时,所执行的函数
(type) 被返回的数据的类型 (html,xml,json,jasonp,script,text)
(options) 完整 AJAX 请求的所有键/值对选项
讲了这么多我再来看看实例
$.ajax实例
代码如下 | 复制代码 |
//1.$.ajax带json数据的异步请求 var aj = $.ajax( { url:'productManager_reverseUpdate',// 跳转到 action data:{ selRollBack : selRollBack, selOperatorsCode : selOperatorsCode, PROVINCECODE : PROVINCECODE, pass2 : pass2 }, type:'post', cache:false, dataType:'json', success:function(data) { if(data.msg =="true" ){ // view("修改成功!"); alert("修改成功!"); window.location.reload(); }else{ view(data.msg); } }, error : function() { // view("异常!"); alert("异常!"); } }); //2.$.ajax序列化表格内容为字符串的异步请求 //3.$.ajax拼接url的异步请求 //4.$.ajax拼接data的异步请求
|
jquery.get实例
jquery.get( url, [ data ], [ callback(data, textstatus, xmlhttprequest) ], [ datatype ] )
returns: xmlhttprequest
url 字符串,其中包含的url的请求被发送。
data 地图或字符串发送到与请求的服务器。
callback(data, textstatus, xmlhttprequest),如果请求成功执行。
datatypethe 类型的数据预计从服务器。
这是一个缩写的ajax功能,这相当于:
代码如下 | 复制代码 |
$.ajax({ url: url, data: data, success: success, datatype: datatype });
|
调函数成功返回的数据传递,这将是一个xml根元素,文本字符串,网页特效文件,或根据响应的mime类型的json对象。它也通过了响应文本状态。
在jquery 1.4,成功回调函数也是通过xmlhttprequest对象。
大多数实现将指定一个成功的处理程序:
代码如下 | 复制代码 |
$.get('ajax/test.html', function(data) { $('.result').html(data); alert('load was performed.'); }); |
jQuery.post实例
jQuery.post( url, [data], [callback], [type] ) :
使用POST方式来进行异步请求
参数:
url (String) : 发送请求的URL地址.
data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示。
callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。
type (String) : (可选)官方的说明是:Type of data to be sent。其实应该为客户端请求的类型(JSON,XML,等等)
1.html页面(index.html)
代码如下 | 复制代码 |
<!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> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Untitled Document</title> <script type="text/javascript" src='#'" /jquery-1.3.2.js"></script> <script language="javascript"> function checkemail(){ if($('#email').val() == ""){ $('#msg').html("please enter the email!"); $('#email').focus; return false; } if($('#address').val() == ""){ $('#msg').html("please enter the address!"); $('#address').focus; return false; } ajax_post(); } function ajax_post(){ <body> |
2.php页面(action.php)
代码如下 | 复制代码 |
<?php $email = $_POST["email"]; $address = $_POST["address"]; //echo $email; |
jquery.getjson实例
jquery.getjson( url, [ data ], [ callback(data, textstatus) ] )
url 一个字符串,其中包含的url,该请求被发送。
data 地图或字符串,发送到与请求的服务器
callback(data, textstatus) 回调函数是执行,如果请求成功。
看一个简单的实例
代码如下 | 复制代码 |
$.ajax({ url: url, datatype: 'json', data: data, success: callback }); |
回调是通过返回的数据,这将是一个网页特效对象或数组的定义和解析json结构使用$。parsejson()方法。
大多数实现将指定一个成功的处理程序:
代码如下 | 复制代码 |
$.getjson('ajax/test.json', function(data) { $('.result').html('<p>' + data.foo + '</p>' + '<p>' + data.baz[1] + '</p>'); }); |
这个例子,当然,依赖于json文件结构:
{
"foo": "the quick brown fox jumps教程 over the lazy dog.",
"bar": "abcdefg",
"baz": [52, 97]
}
代码如下 | 复制代码 |
<!doctype html> <html> <head> <style>img{ height: 100px; float: left; }</style> <script src="http://code.jquery.com/jquery-latest.min.js"></script> </head> <body> <div id="images"> </div> </body> |
jquery $.getScript实例
该函数是简写的 Ajax 函数,等价于:
代码如下 | 复制代码 |
$.ajax({ url: url, dataType: "script", success: success }); |
这里的回调函数会传入返回的 JavaScript 文件。这通常不怎么有用,因为那时脚本已经运行了。
载入的脚本在全局环境中执行,因此能够引用其他变量,并使用 jQuery 函数。
比如加载一个 test.js 文件,里边包含下面这段代码:
代码如下 | 复制代码 |
$(".result").html("<p>Lorem ipsum dolor sit amet.</p>"); |
通过引用该文件名,就可以载入并运行这段脚本:
代码如下 | 复制代码 |
$.getScript("ajax/test.js", function() { alert("Load was performed."); }); |