三步教你學會ajax開發應用

來源:互聯網
上載者:User

      ajax在很多程式員的眼裡是一個很複雜或陌生的字眼,其實, AX並不複雜,自從AJAX技術出來後,天花亂墜的架構紛紛出台,搞得技術開發人員無從下手,baidu google裡也有很多例子,大都是非常複雜。

  其實就web開發而言,AJAX技術只是一個配合,完全沒有必要本末倒置,是一種頁面最佳化的技術,也就是說,如何去最佳化我們的web頁面才是AJAX的重頭戲。下面我舉個很簡單的例子,可以滿足大部分的業務需求。(當然,如果是很專業的頁面要求,可以去參考那些複雜的架構)

  第一步:寫一個背景“介面”,這個可以用任何語言來實現,只要能返回http報文就可以了,我這裡以webwork後台代碼舉個例子

public String hotWeek() throws Exception{
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("text/xml; charset=gb2312");
        PrintWriter out = response.getWriter();
        StringBuffer insertHotHtml = new StringBuffer();
        insertHotHtml.append(" <table width=171 border=0 align=center cellpadding=0
cellspacing=0>   ");
            insertHotHtml.append("<tr> ");
            insertHotHtml.append("<td width=23 height=25></td>  ");
            insertHotHtml.append("</tr> ");
        insertHotHtml.append("</table> ");
        out.print(insertHotHtml.toString());  //返回一個有表格的HTTP報文
        return null;
    }
  不用java的朋友根本不用管這些,只要記住,能返回一個HTTP報文,比如一個靜態網頁也可以。

  第二步 :在頁面裡加入下面這段javascript代碼

var xmlHttp;
function createXMLHttpRequest(){
    if (window.ActiveXObject){
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest){
        xmlHttp = new XMLHttpRequest();
    }
}
function startAjaxRequest(method,async,actionUrl,data, invokeMethod){
    createXMLHttpRequest();
    xmlHttp.open(method, actionUrl, async);
    xmlHttp.onreadystatechange = handleStateChange;
    xmlHttp.send(data);
    function handleStateChange(){
        if(xmlHttp.readyState == 4){
            if(xmlHttp.status == 200){
                var nodeId = xmlHttp.responseText;
                if (nodeId=='noPermission'){
                    alert('你沒有許可權訪問此操作!');
                }else if( (falseIndex = nodeId.indexOf("false||"))!= -1 ){
                   alert('操作失敗,可能的原因為:' + nodeId.substring(
falseIndex+7, nodeId.length) + "!");
                }else if(nodeId=='false'){
                    alert('操作失敗,請和管理員聯絡!');
                }else ...{
                    if (invokeMethod == undefined){
                        getResult(nodeId);
                    } else {
                        invokeMethod(nodeId);
                    }
                }
            }
        }
    }   
}
  我們要用的就是startAjaxRequest(method,async,actionUrl,data, invokeMethod) 這個方法,具體實現,也不可以不用理會,對於IE和firefox都可以相容,method 要麼是GET,要麼是POST,async我們一般都設定為true就可以了,data用來傳資料給後台,invokeMethod是指後台返回資料後,前台自動調用什麼方法,如果為空白,那麼就預設調用 invokeMethod(nodeId)這個方法。

$(document).ready(function(){
            var actionUrl = "./provider!hotWeek.action";
            $('body').html("<strong>頁面載入中...</strong>");
            startAjaxRequest("GET",true,actionUrl,'');
    });
這裡我是用jQuery的,一個很好用的javascript架構。

"./provider!hotWeek.action" 就是我們擷取HTTP報文的地址,大家完全可以用 比如 myTable.asp myTable.php只要返回的HTTP報文是符合XML規則的HTML語言就可以了。

  第三步:後台返回後的處理方法

  function getResult(nodeId){
        $('body').html(nodeId);
    }
總結起來,其實只要 startAjaxRequest("GET",true,actionUrl,'') 這麼一個方法就可以去滿足大部分AJAX的業務需求了,根本沒有必要弄得那麼複雜。




聯繫我們

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