码迷,mamicode.com
首页 > Web开发 > 详细

ajax请求

时间:2015-07-01 06:20:19      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:ajax

一个完整的Ajax过程如下:

  1. 创建XMLHttpRequest对象

  2. 通过上一步创建的XMLHttpRequest对象,打开一个连接

  3. 绑定事件,对获取到的数据进行处理。一般为请求成功后的回调函数

  4. 发送该请求

根据上面的步骤进行简单的描述:

1. 对于不同的浏览器,创建一个能发起Ajax请求对象的方式不一样。 现代浏览器通过内嵌的XMLHttpRequest()对象即可实现,而老的浏览器(IE6/IE6-)则需要通过一个ActiveX对象来创建。

2. 打开一个到远程对象的请求,需要通过XHR的open()方法实现。语法:

open(method, url, async, user, password)

其中:

  • method可以取值为GET、POST、HEAD、PUT、DELETE、OPTIONS,前二者是常用的。

  • url为请求的远程接口

  • async为布尔值,是否需要异步处理请求,默认为true

  • 如果此接口需要用户名和密码,可附上,不过这样就暴露了

3. 通过监控readystatechange事件,判断数据是否请求完成,并进行相关处理。其状态值可以通过readyState获取,有如下5种状态:

  • 0: XHR对象未初始化

  • 1: XHR对象已经建立,但还未发送

  • 2: 已调用send(),请求已发送

  • 3: 已接收到数据,正在处理中

  • 4: 数据接收并处理完成,可以使用了

4. send()方法用于发送请求,若是POST方式,可以将需要传送的数据作为参数发送,形如send(data),但此时需要先设置XMLHttpRequest请求头的Content-Type为application/x-www-form-urlencoded。

一个简单的Ajax示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var XMLHttpFactories = [
    function () {return new XMLHttpRequest()},
    function () {return new ActiveXObject("Msxml2.XMLHTTP")},
    function () {return new ActiveXObject("Msxml3.XMLHTTP")},
    function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];
 function createXMLHTTPObject() {
    var xmlhttp = false;
    for (var i=0;i<XMLHttpFactories.length;i++) {
        try {
            xmlhttp = XMLHttpFactories[i]();
        } catch (e) {
            continue;
        }
        break;
    }
    return xmlhttp;
}
 // 步骤1:建立XMLHttpRequest对象
var xhr = createXMLHTTPObject();
// 步骤2:打开一个连接
xhr.open(‘GET‘, http://localhost/phpinfo.php);
// 步骤3:绑定对返回数据的回调函数
xhr.onreadystatechange = function() {
    console.log(xhr.readyState +‘:‘+ xhr.status);
}
// 步骤4:发送请求
xhr.send();


jQuery中ajax的4种常用请求方式:
1.$.ajax()返回其创建的 XMLHttpRequest 对象。
$.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。
如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml")。
实例:
保存数据到服务器,成功时显示信息。
$.ajax({
       type: "post",
       dataType: "html",
       url: ‘/Resources/GetList.ashx‘,
       data: dataurl,
       success: function (data) {            if (data != "") {
               $("#pager").pager({ pagenumber: pagenumber, pagecount: data.split("$$")[1], buttonClickCallback: PageClick });
               $("#anhtml").html(data.split("$$")[0]);

           }
       }
   });
2.通过远程 HTTP GET 请求载入信息。
这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
实例:
$.get("test.cgi", { name: "John", time: "2pm" },
 function(data){
   alert("Data Loaded: " + data);
 });
3. 通过远程 HTTP POST 请求载入信息。
这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
实例:
$.post("/Resources/addfriend.ashx", { "fid": fids, "fname": fnames, "tuid": tuids, "tuname": tunames }, function (data) {        if (data == "ok") {
           alert("添加成功!");
       }
   })4.通过 HTTP GET 请求载入 JSON 数据。
实例:
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
function(data){
 $.each(data.items, function(i,item){
   $("<img/>").attr("src", item.media.m).appendTo("#images");    if ( i == 3 ) return false;
 });
});

ajax请求

标签:ajax

原文地址:http://bartely.blog.51cto.com/10473626/1669556

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!