jQuery_review之通過$.get()和$.post()方法來實現非同步載入

來源:互聯網
上載者:User

標籤:style   http   java   使用   os   資料   io   問題   

    $.get()和$.post()這兩個方法,顧名思義,一個就是通過get方法來擷取資料,另外一個通過post方法來擷取資料。這兩個方法在具體有什麼區別呢?重點有三個方面的區別,第一個get傳送的資料理論在2KB之內,post方法原則上是不受限制的。第二個方面,一個在地址欄上會顯示當前的請求內容,這種在有使用者名稱和密碼的時候就不好了。另外一個是在請求體當中,這個雖然也不是很安全,但是至少要比GET方法要安全那麼一點點了。第三個,其實get方法最初是用來設計請求靜態內容的,而POST則是用來提交增刪改資料的,只是後來的這個區分沒那麼明顯而已了。
    回頭來說    $.get()和$.post這兩個方法。這個兩個方法都可以接受四個參數,第一個參數是告訴jQuery我要到什麼地方去請求資料,第二個參數,是選擇性參數,是告訴jQuery我的請求資料是什麼,這些請求資料會變成請求資料的一部分,主要是用於傳遞key/value的值到服務端進行處理。第三個參數是回調參數,回調參數只有在調用成功的時候才會調用。這裡就有一個問題,如果回調不成功的話,應該怎麼辦?這時候就應該參考jQuery的全域方法中對於返回異常的處理了。最後一個參數,就是期望伺服器傳遞迴來的資料類型,這些資料類型包括但是不限於xml,html,json,script等等內容。尤其注意的是xml,xml這個東西其實和html是同源的,他們的老祖宗估計都是一個。所以,很多原本用於html的jquery方法,都是可以使用到xml上的,比如使用$()這個萬能工廠,將返回的xml資料變成一個object對象,使用.find()來找到子項目,使用attr找到屬性的值,使用.text()找到元素中的文本值。
    還有一個要注意的是,前端寫了期望後端發送的資料是xml,那麼後端就應該按照前端的約定來發送資料:response.setContentType("text/xml;charset=UTF-8");

Server端的代碼如下:

@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {String name = req.getParameter("name");String address = req.getParameter("address");StringBuffer sb = new StringBuffer();sb.append("<div><span>hi! nice to meet you! ");sb.append(name).append(",(");sb.append(address).append("),");sb.append("how are you getting along?</span></div>");StringBuffer xmlSb = new StringBuffer();xmlSb.append("<book>") .append("<title>") .append("No ventured No gained") .append("</title>") .append("<publish>") .append("Chinses publish") .append("</publish>") .append("</book>");//resp.setContentType("text/html;charset=utf-8");resp.setContentType("text/xml;charset=utf-8");resp.getWriter().print(xmlSb.toString());}


前端的代碼如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  <script type="text/javascript" src="jquery-1.8.3.js"></script><script type="text/javascript">$(function(){$("#getContentByAjax").click(function(){//$.post("test",{name:"czz",address:"address"},callBack,"html");//$.get("test",{name:"czz",address:"address"},callBack,"html");$.get("test",{name:"czz",address:"address"},callBack,"xml");});function callBack(data,textStatus){//$("#showText").html(data);var title=$(data).find("title").text();var publish = $(data).find("publish").text();$("#showText").text(title+" "+publish);}});  </script>  </head>  <body>  <div id="showText"></div>  <input type="button" id="getContentByAjax" value="sendAjax">  </body></html>



聯繫我們

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