1. 程式人生 > >jsp中利用jquery+ajax傳遞json格式引數與前後臺之間

jsp中利用jquery+ajax傳遞json格式引數與前後臺之間

經過一段時間的實驗琢磨,終於將前後臺之間的引數傳遞搞定了,實驗所用工具myeclipse+structs1.2。

總結:容易出錯的地方:1.ajax中data的格式一定要寫對,這裡舉了兩種形式,一種是  data:{引數:“”}   另一種是  data:“引數=”+變數。

2.後臺傳遞到前臺資料轉化為json格式,步驟要掌握好。

3.在js使用jquery必須要引用進來,否則會不執行jquery語句,這個問題困擾了我半天才解決掉,菜鳥的悲哀啊。jquery引用流程如下:網上下載jQuery.js,jquery-1.4.2.min.js兩個js檔案,放在webroot下的資料夾js中,引用程式碼如下:

<script src="<%=path%>/js/jQuery.js" language="javascript"type="text/javascript"></script>

<script src="<%=path%>/js/jquery-1.4.2.min.js" language="javascript"type="text/javascript"></script>

其中<%=path%>就代表了根目錄wenroot檔案目錄。

4.ajax的url路徑必須要寫對。

5.當前臺沒有傳遞引數到後臺時,data可以不用寫,或用data:{}代替。

前臺程式碼如下:

var checkValue=$("#s1").val();
//這個var是獲取的id問s1的select選擇的opention值
				$
				.ajax({
					type : "post",
					url : "getShowDataList.do",
					async : true,
					//data:{data:""},這種也可以
					data : 
						"filepath="+checkValue
//data:中的是傳遞到後臺的資料,這裡資料格式為json格式
					,
					dataType : "json",
					error : function() {
						//alert(checkValue);
						alert('載入失敗!');
					},
					success : function(json) {
//這裡的json是後臺傳遞過來的資料,這裡資料格式也是json格式
前臺獲取後臺的json格式list資料集,這段寫在function中
var points = [];//建立陣列 
						for ( var i = 0; i < json.length; i++) {

							var str = new OpenLayers.LonLat(json[i].lon,
									json[i].lat);
							points.push(str);

						}



後臺程式碼:

public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

		String filepath = request.getParameter("filepath");
//獲取前臺傳遞過來的filepath
		System.out.println(filepath);
		
		List<Show> datalist = getShowData(filepath);

		response.setContentType("appliction/json;charset=utf-8");
		JSONArray jsonArray = JSONArray.fromObject(datalist);
                //下面是傳遞後臺json格式的list資料集到前臺
		try {

			PrintWriter out = response.getWriter();
			out.print(jsonArray);
			for (int i = 0; i < jsonArray.size(); i++) {
				System.out.println(jsonArray.get(i));
			}
			out.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}