1. 程式人生 > >web中用ajax傳遞json資料到後臺

web中用ajax傳遞json資料到後臺

個人筆記,不喜歡勿評論

今天學習了一下如何使用ajax傳遞json資料到後臺

1、首先需要匯入幾個json的jar包;


2、開始寫程式碼

     前端程式碼:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript" src="jquery-2.1.4.js"></script>
<script type="text/javascript">
	function add() {

		/**
		當給個錯誤的url的時候,就會走到error方法裡面,
		該ajax請求會返回一個status code碼,當返回值為200時,表示成功,執行success方法,否則執行error方法;
		 */

		/* $.ajax({
		    cache: true,
		    type: "POST",
		    url:"/Ajax/TestServlet",
		    data:$('#form1').serialize(),// 你的formid
		   
		    async: false,
		    error: function(request) {
		        alert("提交失敗");
		    },
		    success: function(data) {
		       /* $("#commonLayout_appcreshi").parent().html(data);*/
		/*    alert(data);
			$("#div1").text(data);
		}
		}); */

		/**
		採用json的方式進行資料傳遞
		 */
		var jsonvalue = {
			"name" : "丫丫",
			"id" : 1,
			"password" : 123456
		};
		var jsonshuzu = {
			"name" : [ {
				"age" : 25,
				"height" : 160,
				"weight" : 100,
				"email" : "1946898935"
			}, {
				"age" : 26,
				"height" : 178,
				"weight" : 140,
				"email" : "1234567"
			} ],
			"address" : [ {
				"addressname" : "福州市"
			}, {
				"addressname" : "廈門市"
			} ]
		};
		alert("走到了add方法裡面");
		/**
		dataType : "json":的意思是從後臺返回的值必須為json格式,否則將執行error方法
		*/
		$.ajax({
			cache : true,
			type : "post",
			url : "/Ajax/TestServlet",
			data : {
				"ss" : JSON.stringify(jsonshuzu)
			},
			
			async: false,
			error : function(request) {
				alert("提交失敗");
			},
			success : function(data) {
				alert("data:" + data);
				$("#div1").text(data);
			}
		});
	}
</script>
</head>

<body>
	<form id="form1">
		<!-- 使用者名稱:<input type="text" id="input1" name="username" id="yonghu"></input><br />
		密碼:<input type="password" name="password" id="mima"></input><br />  -->
		<input
			type="button" name="提交" value="提交" onclick="add()"></input>
		<div id="div1"></div>
	</form>
</body>
</html>

後臺接受的程式碼:
response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		System.out.println("到了dopost方法中----------------------------");
		PrintWriter out = response.getWriter();
		/**
		 * 採用request.getParameter("username");獲取從頁面傳來的值時,括號中的引數為頁面中name的值
		 */
		/*String username=request.getParameter("username");
		String passwrd=request.getParameter("password");
		System.out.println(username+"/"+passwrd);
		out.print(username+"/"+passwrd);*/
		/**
		 * 接受從前端傳遞過來的json資料,要注意引入解析json的包
		 */
		String name=request.getParameter("ss");
		JSONObject json=JSONObject.fromObject(name);
		Iterator iter = json.keySet().iterator();  
	       Map<String,String> map = new HashMap<String,String>();  
	       /**
	        * 解析來自前端頁面的值,解析json陣列
	        */
	       while (iter.hasNext()) {  
	        String key = (String) iter.next();  
	        String value = json.getString(key);  
	        System.out.println("key:"+key+",value:"+value);
	        map.put(key, value);  
	       }
	     String value=map.get("name");
	     JSONArray jsonArray =JSONArray.fromObject(value);
	     System.out.println("長度為:"+jsonArray.size());
	    	     for (int i = 0; i <jsonArray.size(); i++) {
				int age=(Integer) jsonArray.getJSONObject(i).get("age");
				int height= (Integer) jsonArray.getJSONObject(i).get("height");
				int weight= (Integer) jsonArray.getJSONObject(i).get("weight");
				String email=(String) jsonArray.getJSONObject(i).get("email");
				System.out.println("獲取到的值為:"+age+","+height+","+weight+","+email);
				}
	    	     String values=map.get("address");
	    	     JSONArray jsonArray2=JSONArray.fromObject(values);
	    	     for (int i = 0; i <jsonArray2.size(); i++) {
					String city=(String) jsonArray2.getJSONObject(i).get("addressname");
					System.out.println("獲取到的城市名為:"+city);
				}
		
	    /**
	     * 前端頁面設定了dataType為json格式,則後臺返回時返回的格式必須為json格式
	     */
	       out.print("提交成功");
		out.flush();
		out.close();


注意事項:

1、前端需注意的是①json資料的寫法②ajax傳遞時,若定義datatype:"json",則表示後臺返回的值必須為json格式才可以

2、後臺需注意json陣列的解析方式