Ajax JS 中的Ajax jquery中的Ajax


Ajax  (Asynchronous Javascript And XML)  通過在后台與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

1、Ajax的優勢:

  不需要插件的支持,能被大多數主流瀏覽器支持

  優秀的用戶體驗,不用刷新整個頁面,就能更新數據

  提高web程序的性能,通過XMLHttpRequest對象向服務端提交所需的數據

  

2、Ajax的核心: XMLHttpRequest 對象, 發送異步請求、接收相應 、執行回調 都是通過它來進行。

3 ajax 請求過程:(JS)

  創建 XMLHttpRequest 對象、連接服務器、發送請求、接收響應數據;

1、創建XMLHttpRequest對象:

var xhr = function createXhr(){
                  if(window.ActiveXObject){ //IE5 IE6
                    return new window.ActiveXObject("Microsoft.XMLHttp");
                  }else if(window.XMLHttpRequest){  //IE7 以上 及 其他瀏覽器
                    return new XMLHttpRequest();
                  }else{
                    alert("您的瀏覽器不兼容,換一個");
                    return null;
                  }
                }

2、准備向服務端發請求,open()

          if(xhr!=null){    
              //如果實例化成功,就調用open()方法,就開始准備向服務器發送請求
            xhr.open("post", url, true);            
            /*三個參數:第一個是發送請求的類型,POST 和GET 兩種
                      第二個是url的地址,(地址也可以是靜態文件,xml文件)
                      第三個,是否是異步,true是 異步。false 是同步*/
          }

3、回調函數的處理(數據接收的處理)

xhr.onreadystatechange = processResponse; //指定響應函數  

            function processResponse() { 
              
            }

4、發送,

xhr.send();  //

注意幾個書寫的順序:

 var xhr = createXMLHttpRequest();
      xhr.open("GET","test.jsp",true);
      xhr.OnreadyStateChange = function(){
          if(xhr.readyState==4&&xhr.status==200){
            //通過responseXML和responeText來獲取信息      
            var doc = xhr.responseXML;//responseXML只能獲取XML格式
            (var doc = xhr.responseText)


          }
      }
      xhr.send();

 

2、jquery中AJax的實現

1、load();直接為包裝器創建,

$("#content").load(url,[data](數據,可省略),[callback](回調函數,可省略));
如果有第二個,按照POST 方式發送,如果沒有 用 GET 方式發送。

//表示將01 html文件中 id是 test的元素 加載到 content中
 $('#content').load("01.html #test");

                

 

2、$.get();

$.get(url,[data](數據,可省略),[callback](回調函數,可省略));

3、$.getJson()

 

4、$.post()

 

5、$.ajax()  $.post、$.get是一些簡單的方法,如果要處理復雜的邏輯,還是需要用到jQuery.ajax()

一、$.ajax的一般格式

      $.ajax({
                   url: "http://www.hzhuti.com",    //請求的url地址
                   dataType: "json",   //返回格式為json
                   async: true, //請求是否異步,默認為異步,這也是ajax重要特性
                   data: { "id": "value" },    //參數值
                  type: "GET",   //請求方式
                  beforeSend: function() {
                      //請求前的處理
                  },
                  success: function(req) {
                      //請求成功時處理
                  },
                  complete: function() {
                      //請求完成的處理
                  },
                  error: function() {
                      //請求出錯處理
                  }
        });

 

 

二、$.ajax的參數描述

參數 描述

url 必需。規定把請求發送到哪個 URL。
data 可選。映射或字符串值。規定連同請求發送到服務器的數據。
success(data, textStatus, jqXHR) 可選。請求成功時執行的回調函數。
dataType

可選。規定預期的服務器響應的數據類型。

默認執行智能判斷(xml、json、script 或 html)。

 

三、一些:

//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("異常!");  
     }  
});

在提交中,如果有表單,把表單添加到參數data中,有很多,很麻煩,jquery 提供了 serialize()方法,能將DOM元素序列化為一個字符串
//2.$.ajax序列化表格內容為字符串的異步請求
function noTips(){  
    var formParam = $("#form1").serialize();//序列化表格內容為字符串  
    $.ajax({  
        type:'post',      
        url:'Notice_noTipsNotice',  
        data:formParam,  
        cache:false,  
        dataType:'json',  
        success:function(data){  
        }  
    });  
}  


//3.$.ajax拼接url的異步請求
var yz=$.ajax({  
     type:'post',  
     url:'validatePwd2_checkPwd2?password2='+password2,  
     data:{},  
     cache:false,  
     dataType:'json',  
     success:function(data){  
          if( data.msg =="false" ) //服務器返回false,就將validatePassword2的值改為pwd2Error,這是異步,需要考慮返回時間  
          {  
               textPassword2.html("<font color='red'>業務密碼不正確!</font>");  
               $("#validatePassword2").val("pwd2Error");  
               checkPassword2 = false;  
               return;  
           }  
      },  
      error:function(){}  
}); 


//4.$.ajax拼接data的異步請求
$.ajax({   
    url:'<%=request.getContextPath()%>/kc/kc_checkMerNameUnique.action',   
    type:'post',   
    data:'merName='+values,   
    async : false, //默認為true 異步   
    error:function(){   
       alert('error');   
    },   
    success:function(data){   
       $("#"+divs).html(data);   
    }
});

 

JQuery 中設置AJAX 的全局函數

var $doc = $(document);
$doc.ajaxComplete(function(event,xhr,options){
    var str_timeout = xhr.responseText;
    if ("session_timeout" === str_timeout) {
        window.top.location = rootPath + "/system/login/login.jsp";
    } 
});

 

ajaxStart

在jQuery AJAX函數或命令發起時,但在XHR實例被創建之前

類型被設置為ajaxStart的全局回調信息對象

ajaxSend

在XHR實例被創建之后,但在XHR實例被發送給服務器之前

類型被設置為ajaxSend的全局回調信息對象;XHR實例;$.ajax()函數使用的屬性

ajaxSuccess

在請求已從服務器返回之后,並且響應包含成功狀態碼

類型被設置為ajaxSuccess的全局回調信息對象;XHR實例;$.ajax()函數使用的屬性

ajaxError

在請求已從服務器返回之后,並且響應包含失敗狀態碼

類型被設置為ajaxError的全局回調信息對象;XHR實例;$.ajax()函數使用的屬性;被XHR實例返回的異常對象(如果有的話)

ajaxComplete

在請求已從服務器返回之后,並且在任何已聲名的ajaxSuccess或ajaxError回調函數已被調用之后

類型被設置為ajaxComplete的全局回調信息對象;XHR實例;$.ajax()函數使用的屬性

ajaxStop

在所有其他AJAX處理完成以及任何其他適用的全局回調函數已被調用之后

類型被設置為ajaxStop的全局回調信息對象    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如果在jQuery.ajax()jQuery.ajaxSetup()中將選項參數global設為false,可以禁止該AJAX請求觸發全局的AJAX事件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM