標籤: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>