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

來源:互聯網
上載者:User

jQuery_review之通過$.get()和$.post()方法來實現非同步載入,jquery_review.post
    $.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>




使用jquery post方法非同步訪問,返回來的json資料不可以解析?

1.你指定datatype :'json' 時,如果後台不轉化為json 格式是不行的.
2.parse用於從一個字串中解析出json對象。
3. 如果後台返回的是個json格式的對象,你直接可以通過 data點屬性就可以訪問.
後台如果是list 轉josn , 你可以通過 data[0]點屬性,當然你的datatype 為 json.
 
java 、JQuery問題,$ajax()、$post()、$get(),各在什情況下使用?它們的不同?

jQuery Ajax 執行個體 全解析

jQuery確實是一個挺好的輕量級的JS架構,能協助我們快速的開發JS應用,並在一定程度上改變了我們寫JavaScript代碼的習慣。
廢話少說,直接進入正題,我們先來看一些簡單的方法,這些方法都是對jQuery.ajax()進行封裝以方便我們使用的方法,當然,如果要處理複雜的邏輯,還是需要用到jQuery.ajax()的(這個後面會說到).
1. load( url, [data], [callback] ) :載入遠程 HTML 檔案代碼並插入至 DOM 中。
url (String) : 請求的HTML頁的URL地址。
data (Map) : (選擇性參數) 發送至伺服器的 key/value 資料。
callback (Callback) : (選擇性參數) 請求完成時(不需要是success的)的回呼函數。
這個方法預設使用 GET 方式來傳遞的,如果[data]參數有傳遞資料進去,就會自動轉換為POST方式的。jQuery 1.2 中,可以指定選擇符,來篩選載入的 HTML 文檔,DOM 中將僅插入篩選出的 HTML 程式碼。文法形如 "url #some > selector"。
這個方法可以很方便的動態載入一些HTML檔案,例如表單。
範例程式碼:
$(".ajax.load").load("www.cnblogs.com/...2.html .post",

function (responseText, textStatus, XMLHttpRequest){

this;//在這裡this指向的是當前的DOM對象,即$(".ajax.load")[0]

//alert(responseText);//請求返回的內容
//alert(textStatus);//請求狀態:success,error
//alert(XMLHttpRequest);//XMLHttpRequest對象
});

這裡將顯示結果。

註:不知道為什麼URL寫絕對路徑在FF下會出錯,知道的麻煩告訴下。下面的get()和post()樣本使用的是絕對路徑,所以在FF下你將會出錯並不會看到返回結果。還有get()和post()樣本都是跨域調用的,發現傳上來後沒辦法擷取結果,所以把運行按鈕去掉了。

2. jQuery.get( url, [data], [callback] ):使用GET方式來進行非同步請求
參數:
url (String) : 發送請求的URL地址.
data (Map) : (可選) 要發送給伺服器的資料,以 Key/value 的索引值對形式表示,會做為QueryString附加到請求URL中。
callback (Function) : (可選) 載入成功時回呼函數(只有當Response的返回狀態是success才是調用該方法)。
這是一個簡單的 GET 請求功能以取代複雜 $.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.