ajax响应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;

	@Override
	protected 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();
	}

	@Override
	protected 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;

	@Override
	protected 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();
	}

	@Override
	protected 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,不知道为什么?有知道的朋友烦请告知一声,非常感谢。

时间: 2024-08-05 19:36:12

ajax响应json字符串和json数组的相关文章

JS解析json数据并将json字符串转化为数组的实现方法

json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法,需要了解的朋友可以参考下 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document

Jquery解析json字符串、json数组

<!doctype html> <html> <head> <meta charset="utf-8"> <script src="../js/libs/jquery-1.6.2.min.js"></script> </head> <body> <hr /> <h3>解析json字符串.json数组</h3> <input typ

jquery字符串数组转json字符串 C#json字符串转字符串list

一.jquery字符串数组转json字符串 var str=['1','2','3']; var jsonText= JSON.stringify(str);//把一个对象转换成json字符串 str=JSON.parse(jsonText);//把一个json字符串解析成对象 二. C#json字符串转字符串list using System.Web.Script.Serialization; JavaScriptSerializer js = new JavaScriptSerializer

Gson解析json字符串、json数组转换成对象

实体类: public class Product { private int id; private String name; private String date; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name

AJAX —— JSON 字符串 与 JSON 对象

一.JSON 字符串转 JSON 对象 ----> JSON.parse(JString); 1 // JSON 字符串转 JSON 对象 ----> JSON.parse(JString); 2 $("btn03").onclick = function(){ 3 var str = '{"name":"zhangsan","age":"23"}'; // JSON字符串 4 var obj

JSON字符串和JSON对象

今天来讲讲,之前虽然一直在提交数据,但是还是没有明白这个里面的区别,其实这个当javascript基础到达一定基础了,理解并不难 代码如下:var str = "{name:'David',age : '22'}"; 所以大家在控制台下看到了这个结果,typeof判断了str 是字符串; 然后看下js对象: var obj = {name:'David',age'22'}; 大家看得出就是这个区别 在用ajax 传输数据的时候 我们一般采用json字符串来传递,所以就牵涉到字符串与对象

【荐】使用eval()、new Function()将JSON字符串转换为JSON对象

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用jQuery的each方法来遍历 用jQuery解析JSON数据的方法,作为jQuery异步请求的传输对象,jQuery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先

json字符串与json对象的相互转换

什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更易理解 * JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台.JSON 解析器和 JSON 库支持许多不同的编程语言 JSON字符串: var str = '{ "name": "zwq", "

Json字符串和Json对象的简单总结

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率).经常在调用C#的WebService接口中,用它作为数据传输的格式. 简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序.这个字符串看起来有点儿古怪(稍后会看到