jQuery數據交互Ajax

一、Ajax的使用

1.1、load方法:從服務器上獲取靜態數據文件
<script type="text/javascript">
 $(document).ready(function(){
 // load()方法:jquery中用來請求靜態文件的方法,如請求html文檔
 // load的參數:
 // url:要請求的靜態文件的路徑
 // data:要發送給服務器的參數(如果沒有傳參,則load用get方式請求服務器;如果傳了參數,且參數是鍵值對,則load會轉換為post方式請求數據)
 // callback:請求結束時執行的回調函數(不管請求是否成功,都會執行該回調函數)
 $('button').click(function(){
 // load請求下來靜態文件后,會直接把該文件拼接進指定的標簽中
 // load方法篩選請求內容:在url之后添加要加載的標簽的標志(標志可以是tag、class、id),之間使用空格隔開,這樣就只能加載到指定的數據

//  $('#news').load('news.html .news1');
// 回調函數中的三個可選參數
// 第一個參數:請求到的數據
// 第二個參數:請求狀態
// 第三個參數:jQuery創建出來的請求對象
$('#news').load('news.html h3', function(responseText, responstStatus, responseObj) {
      console.log(responseText);
      console.log(responstStatus);
      console.log(responseObj);
   });
 });
 })
 </script>
1.2、GET和POST方法
<script type="text/javascript">
 $(document).ready(function(){
 // 通過點擊按鈕請求數據
 $('button').click(function(){
 // .get()用來向服務器發起get請求
 // 第一個參數:請求路徑
 // 第二個參數:對象類型的數據,把需要提交給服務器的參數放在這個對象中
 // 第三個參數:回調函數,當請求成功時,會執行該函數,通過這個回調函數拿到請求的值
 // 第四個參數:服務器返回數據的類型(如果我們需要請求的服務器給我們返回的是json數據,則這個參數只能寫json)
 $.get('text.json',{name:'zhangsan'}, function(data){
// 通過data參數拿到請求到的值
alert(data);
// 數據提取,并拼接在文檔中
 });

 // .post()方法,用來發起post請求。當服務器只能接受post請求時,使用該方法,該方法的用法和參數情況與.get()方法完全一樣
 });
 </script>
1.3、ajax方法

$.ajax(options)
參數options是一個對象類型的數據包含

<script type="text/javascript">
 $.ajax({
 // url參數:必填。表示數據接口
 url: 'http://10.0.159.198/news.php',
 // type參數:可選。GET\POST
 // GET:1、參數拼接在URL之后,2、而且參數的大小有限制:2k(服務器端口最多只能接受2k個字節的數據)3、用GET發起的請求數據會在瀏覽器中緩存
 // POST:1、參數存放在請求頭中,2、傳遞參數的大小沒有限制,3、瀏覽器不會緩存post數據
 type: 'GET',
 // data:可選。把需要提交給服務器的參數用&拼接起來。
 data: 'user=123&pass123',
 // success:可選。表示請求成功的回調函數
 success: function(data) {alert(data.name)},
 // error:可選。表示請求失敗的回調函數
//error: function (err) {alert(err)},
 // timeout:可選。設置請求超時時間
 timeout: 3000
 });

使用$.ajax()進行JSONP跨域

<script type="text/javascript">
 $.ajax({
 url: 'http://10.0.159.198/news.php',
 type: 'GET',
 // dataType:表示希望服務器返回的數據類型
 // jsonp:只存在jquery中。
 dataType: 'jsonp',
 // jsonp:表示傳遞給服務器時回到函數名字值的屬性名
 jsonp: 'callbackFun',
 // data:傳遞參數以及回調函數。回調函數的屬性名要和jsonp中指定的一致,回調函數的值用‘?’表示
 data: 'callbackFun=?',
 success: function(data){alert(data.name)}
 })
 </script>
1.4、getJSON方法:專用于加載json文件
<script type="text/javascript">
 $(document).ready(function(){
 // $.getJSON():使用get方式來獲取json文件
 // url:請求的數據接口
 // callback:請求成功的回調函數,通過這個函數的參數獲取到服務器返回的值
                $.getJSON('text.json',function(data){
                    alert(data);
                });

使用$.getJSON()方法進行JSONP跨域:
// 只需要在url后拼接上回調函數的屬性名和屬性值即可。屬性名后后臺人員指定,屬性的值可以使一個‘?’,jQuery會自動把這個"?"轉化為回調函數的函數名

$.getJSON('http://10.0.159.198/news.php?msg=一條大河波浪寬&callbackFun=?', function (data){
alert(data.msg);
})
});
</script>

二、promiseJS規范使用

什么是promise?

promise對象用來進行延遲(deferred)和異步(asynchronous)計算,執行完$.ajax后返回一個對象,用變量接收這個對象后,可以把不同狀態的回調函數添加在這個對象上.

如何使用promise?
var promise = $.ajax({
 type:"get",
 url:"zed.txt",
 async:true
});
promise.done(function(res){alert(res)}).fail(function(err){alert(err)}).always(function)(){console.log('123')});
.done()當數據請求成功后會執行這個方法,并把數據傳遞進回調函數
.fail()當數據請求失敗后會執行這個方法,并把錯誤傳遞進回調函數
.always()不論數據請求成功還是失敗,都會執行這個方法
為什么要用promise?

使用promise可以為服務器的某一個狀態添加多個回調函數

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容