一些簡單的Ajax應用執行個體使用說明

來源:互聯網
上載者:User

這篇博文主要通過一個簡單的Ajax應用來解析一下Ajax技術的原理。
首先需要三個檔案,simpleAjax.hml(用來看效果),simpleAjax.js(用JavaScript中的XMLHttpRequest對象來直接與伺服器進行通訊),simpleAjax.txt(可以自訂非同步通訊輸出內容的檔案)。

1 建立simpleAjax.html檔案

 代碼如下 複製代碼

<html><head><title>一個簡單的Ajax應用</title><script type="text/javascript" src="simpleAjax.js"></script></head><body><input type="button" value="Ajax請求" onclick="startrequest()"/><div id="responseResult"></div>  </body></html>

2 建立simpleAjax.js檔案

 代碼如下 複製代碼


var xmlhttp=null;//首先建立一個作為 XMLHttpRequest 對象使用的 xmlhttp 變數,值設為 null
function createXMLHttpRequest(){
if (window.XMLHttpRequest)
 
  {xmlhttp=new XMLHttpRequest();//針對 IE7+, Firefox, Chrome, Opera, Safari
  }
else if (window.ActiveXObject)
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");//針對 IE6, IE5
  }
}

function startrequest(){//由simpleajax.html中的按鈕點擊調用這個函數
createXMLHttpRequest();//調用上面createXMLHttpRequest()函數
xmlhttp.onreadystatechange=handlestatechange;//調用下面handlestatechange()函數
xmlhttp.open("GET","simpleAjax.txt",true);
xmlhttp.send();
}

function handlestatechange(){
  if (xmlhttp.readyState==4 &#038;& xmlhttp.status==200){
document.getElementById("responseResult").innerHTML=xmlhttp.responseText;
}
}

名稱解釋:

2.1 第一個函數 createXMLHttp() 的作用是根據客服端瀏覽器類型(IE和非IE)以及IE中安裝的JavaScript技術版本的不同建立不同的XMLHttpRequest對象。XMLHttpRequest對象用於在後台與伺服器交換資料。它能夠:在不重新載入頁面的情況下更新網頁、在頁面已載入後從伺服器請求資料、在頁面已載入後從伺服器接收資料、在後台向伺服器發送資料。

2.2 其中 xmlhttp.onreadystatechange 表示每當存有xmlhttprequest的狀態資訊的readyState改變時,就會觸發 這個onreadystatechange 事件。當 readyState 等於 4 且狀態為 200 時,表示響應已就緒。

2.3 其中 xmlhttp:open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword) 表示建立一個新的http請求(bstrUrl),並指定此請求的方法(get,post)、URL以及varAsync布爾型,指定此請求是否為非同步方式,預設為true即當狀態改變時會調用onreadystatechange屬性指定的回呼函數。

2.4 其中 xmlhttp.send() 表示發送請求到http伺服器並接收回應。

3 建立simpleajax.txt檔案
任意在這個txt檔案裡面寫入內容,例如: hello,i have changed myself! 。

上面都是ajax原生態的寫法,下面我們來看個jquery的做法

jQuery Ajax 執行個體 ($.ajax、$.post、$.get)


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

 一、$.ajax的一般格式

 代碼如下 複製代碼

$.ajax({

     type: 'POST',

     url: url ,

    data: data ,

    success: success ,

    dataType: dataType

});

 

二、$.ajax的參數描述

參數描述 
url  必需。規定把請求發送到哪個 URL。
data  可選。映射或字串值。規定連同請求發送到伺服器的資料。
success(data, textStatus, jqXHR)  可選。請求成功時執行的回呼函數。
dataType  可選。規定預期的伺服器響應的資料類型。

預設執行智能判斷(xml、json、script 或 html)。
 

 三、$.ajax需要注意的一些地方:

  1.data主要方式有三種,html拼接的,json數組,form表單經serialize()序列化的;通過dataType指定,不指定智能判斷。

  2.$.ajax只提交form以文本方式,如果非同步提交包含<file>上傳是傳過不過去,需要使用jquery.form.js的$.ajaxSubmit

 代碼如下 複製代碼

//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序列化表格內容為字串的非同步請求
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);  
    }
});

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.