ajax詳解,以及非同步JSOP的實現

來源:互聯網
上載者:User

標籤:

    這裡我使用的是jquery的ajax方法   包括三個方法 : get() , post(),   getJson()

get() 和post()的格式我就使用一下格式,很方便:

    

 1 $.ajax({ 2                     url: ‘地址, 3                     type: ‘get或post‘, 4                     data: { 5                         //這是要傳遞的參數,根據自己需求填寫 6                         studentNum:123, 7                         classId:1, 8                     }, 9                   //success 方法返回的兩個參數,一個是返回的對象,一個是描述狀態的字串,第二個參數一般不用,所以一般就寫成 10                   //success:function(json) 11                     success: function(json, textStatus) {12                         if(json.success) {13                             //操作;14                         } else {15                             alert(json.msg)16                         }17                     },18                     error: function() {  19                        //操作20                     }

error 方法返回的參數有三個   

error: function (jqXHR, textStatus, errorThrown)

第一個參數 jqXHR jqXHR:這裡的jqXHR是一個jqXHR對象,在Jquery1.4和1.4版本之前返回的是XMLHttpRequest對象,1.5版本以後則開始使用jqXHR對象,該對象是一個超集,就是該對象不僅包括XMLHttpRequest對象,還包含其他更多的詳細屬性和資訊。

這裡主要有4個屬性:

  • readyState :目前狀態,0-未初始化,1-正在載入,2-已經載入,3-資料進行互動,4-完成。
  • status  :返回的HTTP狀態代碼,比如常見的404,500等錯誤碼。
  • statusText :對應狀態代碼的錯誤資訊,比如404錯誤資訊是not found,500是Internal Server Error。
  • responseText :伺服器響應返回的文本資訊

第二個參數 String textStatus:返回的是字串類型,表示返回的狀態,根據伺服器不同的錯誤可能返回下面這些資訊:"timeout"(逾時), "error"(錯誤), "abort"(中止), "parsererror"(解析錯誤),還有可能返回空值。

第三個參數 String errorThrown:也是字串類型,表示伺服器拋出返回的錯誤資訊,如果產生的是HTTP錯誤,那麼返回的資訊就是HTTP狀態代碼對應的錯誤資訊,比如404的Not Found,500錯誤的Internal Server Error。

 

接下來就是getJson();

這就是所謂的跨域請求,也就是JSONP;但是JSONP只能是get()請求,把get()請求稍微改動就JSONP了,代碼如下:

只變動了兩個地方, dataType 和jsonp 

 1    $.ajax({ 2             type : "GET", //傳遞參數就是在url後面加上?action=getmsg 等等,參數之間用&隔開  最後還要加上callback=? 3             url : "http://active.zol.com.cn/guofeng/profile2.php?action=getmsg&callback=?", 4             dataType : "jsonp", 5            jsonp: ‘callback‘, 6             success : function(json){ 7                 $(‘#msg_box‘).html(json.msg); 8                9             }10         });

 

 

 

另一種就是使用getJson()這個方法。

 $.getJSON("http://active.zol.com.cn/guofeng/profile2.php?callback=?",    function(data) {        $(‘#result‘).val(‘My name is: ‘ + data.nick);    });

記得在url後面加上?callback=? 原理不必知道,這就是規範,知道這樣使用就可以了。

 

最後補充一點,就是ajax的data的一個參數 async

類型:Boolean

預設值: true。預設設定下,所有請求均為非同步請求。如果需要發送同步請求,請將此選項設定為 false。

注意,同步請求將鎖住瀏覽器,使用者其它操作必須等待請求完成才可以執行

一個很使用的例子就是 : 使用者點擊一個按鈕,調用一次ajax請求,那麼有的使用者會著急的時候會連續點擊從而造成不必要的問題,只要把async設定成false就行了,使用者不管點擊多少次,必須這個請求完成之後才會進行下次請求。


 

  

ajax詳解,以及非同步JSOP的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.