ajax響應json字串和json數組

來源:互聯網
上載者:User

標籤:ajax   json   json字串   json數組   


    最近上班太忙,晚上抽空整理一下ajax請求中,後台返回json字串和json數組的情境,以及前台的處理樣本。


    直接看代碼。


json字串的後台響應

package com.ajax;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/jsonStr")public class JsonStr extends HttpServlet {/** *  */private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 構造json對象String resStr = "{" + "name:" + "\"zhangsan\"," + "id:" + "\"id001\"" + "}";// 輸出json對象到前台PrintWriter out = resp.getWriter();out.write(resStr);out.flush();out.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req, resp);}}


json數組的後台響應


package com.ajax;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/jsonArr")public class JsonArr extends HttpServlet {/** *  */private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 構造json對象String resStr1 = "{" + "name:" + "\"zhangsan\"," + "id:" + "\"id001\"" + "}";String resStr2 = "{" + "name:" + "\"lisi\"," + "id:" + "\"id002\"" + "}";String resStr3 = "{" + "name:" + "\"wangwu\"," + "id:" + "\"id003\"" + "}";// 構造json數組String jsonArr = "[" + resStr1 + "," + resStr2 + "," + resStr3 + "]";// 輸出json數組到前台PrintWriter out = resp.getWriter();out.write(jsonArr);out.flush();out.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req, resp);}}


前台頁面


<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Json</title></head><body><br><br><input type="button" value="JsonStr" onclick="jsonStr()" /><br><br><table><tr><td>username</td><td><input id="username"></td></tr><tr><td>id</td><td><input id="id"></td></tr></table><br><br><br><input type="button" value="JsonArr" onclick="jsonArr()" /><br><br><table border="1" bordercolor="red"><caption>Json Array</caption><thead><tr><th>Username</th><th>Id</th></tr></thead><tbody id="tb"></tbody></table></body><script type="text/javascript">// json字串處理方法function jsonStr() {var xhr = new XMLHttpRequest();xhr.open("get", "jsonStr");xhr.onreadystatechange = function(data) {if (xhr.readyState == 4 && xhr.status == 200) {// 將json字串轉換為json對象var obj = eval("(" + data.target.responseText + ")");document.getElementById("username").value = obj.name;document.getElementById("id").value = obj.id;}};xhr.send(null);}// json數組處理方法function jsonArr() {var xhr = new XMLHttpRequest();xhr.open("get", "jsonArr");xhr.onreadystatechange = function(data) {if (xhr.readyState == 4 && xhr.status == 200) {// 將json字串轉換為json數組var obj = eval("(" + data.target.responseText + ")");// 建立程式碼片段,用於存放表格行var oFragment = document.createDocumentFragment();// 根據json數組長度,產生行資料for (var i=0; i<obj.length; i++) {var trObj = document.createElement("tr");trObj.innerHTML = "<td>" + obj[i].name + "</td><td>" + obj[i].id + "</td>";oFragment.appendChild(trObj);}// 將行資料添加在表格的tBody部分document.getElementById("tb").appendChild(oFragment);}};xhr.send(null);}</script></html>

頁面



點擊 JsonStr 和 JsonArr 按鈕後的效果


好了,整理完畢,樣本僅供學習。


       對了,有一點疑惑,之前回呼函數中,擷取響應資料的時候,都是直接通過data.responseText 來擷取的,今天的代碼中必須使用data.target.responseText,不知道為什嗎?有知道的朋友煩請告知一聲,非常感謝。

ajax響應json字串和json數組

相關文章

聯繫我們

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