Ajax()方法如何與後台互動_AJAX相關

來源:互聯網
上載者:User

Ajax全稱為“Asynchronous JavaScript and XML”(非同步JavaScript和XML),是指一種建立互動式網頁應用的網頁開發技術。Ajax技術是目前在瀏覽器中通過JavaScript指令碼可以使用的所有技術的集合。Ajax以一種嶄新的方式來使用所有的這些技術,使得古老的B/S方式的Web開發煥發了新的活力。

ajax()方法是jQuery底層的ajax實現,通過HTTP請求載入遠端資料。

$.ajax({type: "GET",url: "handleAjaxRequest.action",data: {paramKey:paramValue},async: true,dataType:"json",success: function(returnedData) {alert(returnedData);//請求成功後的回呼函數//returnedData--由伺服器返回,並根據 dataType 參數進行處理後的資料;//根據返回的資料進行業務處理},error: function(e) {alert(e);//請求失敗時調用此函數}});}

  參數說明:

  type:請求方式,“POST”或者“GET”,預設為“GET”。

  url:發送請求的地址。

  data:要向伺服器傳遞的資料,已key:value的形式書寫(id:1)。GET請求會附加到url後面。

  async:預設true,為非同步請求,設定為false,則為同步請求。

  dataType:預期伺服器返回的資料類型,可以不指定。有xml、html、text等。

  在開發中,使用以上參數已可以滿足基本需求。

  如果需要向伺服器傳遞中文參數,可將參數寫在url後面,用encodeURI編碼就可以了。

var chinese = "中文";var urlTemp = "handleAjaxRequest.action?chinese="+chinese;var url = encodeURI(urlTemp);//進行編碼$.ajax({type: "GET",url: url,//直接寫編碼後的urlsuccess: function(returnedData) {alert(returnedData);//請求成功後的回呼函數//returnedData--由伺服器返回,並根據 dataType 參數進行處理後的資料;//根據返回的資料進行業務處理},error: function(e) {alert(e);//請求失敗時調用此函數}});} 

  struts2的action對請求進行處理:

public void handleAjaxRequest() {HttpServletRequest request = ServletActionContext.getRequest();HttpServletResponse response = ServletActionContext.getResponse();//設定返回資料為html文字格式設定response.setContentType("text/html;charset=utf-");response.setHeader("pragma", "no-cache");response.setHeader("cache-control", "no-cache");PrintWriter out =null;try {String chinese = request.getParameter("chinese");//參數值是中文,需要進行轉換chinese = new String(chinese.getBytes("ISO--"),"utf-");System.out.println("chinese is : "+chinese);//業務處理String resultData = "hello world";out = response.getWriter();out.write(resultData);//如果返回json資料,response.setContentType("application/json;charset=utf-");//Gson gson = new Gson();//String result = gson.toJson(resultData);//用Gson將資料轉換為json格式//out.write(result);out.flush();}catch(Exception e) {e.printStackTrace();}finally {if(out != null) {out.close();}}}

  struts.xml設定檔:不需要寫傳回型別

<action name="handleAjaxRequest" class="com.test.TestAction"method="handleAjaxRequest"></action>

分享AJAX前後台互動方法

註:ajax通過async參數決定是非同步還是同步,false同步,true非同步;

  非同步執行順序是先執行後續動作,再執行success裡代碼;

  同步是先執行success裡代碼,再執行後續代碼;

驗證:同步時資料量大是否會卡頓?例如從後台搜尋大量資料時,頁面是否卡死?

1、(非同步)方法調用,後續代碼不需要等待它的執行結果

  後台<C#>:

using System.Web.Script.Services; public static string GetStr(string str1, string str2) { return str1 + str2; }

前台<JQuery>:

function Test(strMsg1,strMsg2) {$.ajax({type: "Post",url: "Demo.aspx/GetStr",async: true,//方法傳參的寫法一定要對,與後台一致,區分大小寫,不能為數組等,str1為形參的名字,str2為第二個形參的名字 data: "{'str1':'"+strMsg1+"','str2':'"+strMsg2+"'}",contentType: "application/json; charset=utf-8",dataType: "json",success: function(data) {//返回的資料用data.d擷取內容 alert(data.d);},error: function(err) {alert(err);}});  //隱藏載入動畫$("#pageloading").hide();}

2、(同步)方法調用,可用於需要得到傳回值是執行後續代碼的前提

  後台<C#>:

using System.Web.Script.Services; public static string GetStr(string str1, string str2) { return str1 + str2; }


前台<JQuery>:

function Test(strMsg1,strMsg2) { var str = “”;$.ajax({type: "Post",url: "Demo.aspx/GetStr",async: false,//方法傳參的寫法一定要對,與後台一致,區分大小寫,不能為數組等,str1為形參的名字,str2為第二個形參的名字 data: "{'str1':'"+strMsg1+"','str2':'"+strMsg2+"'}",contentType: "application/json; charset=utf-8",dataType: "json",success: function(data) {//返回的資料用data.d擷取內容 str = data.d;},error: function(err) {alert(err);}}); return str;
相關文章

聯繫我們

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