XMLHttpRequest接收JSON请求

1.前言

现在Ajax技术已逐步使用JSON响应来获取传统的XML响应。当服务器响应数据量较大,而且响应数据有复杂的结构关系时,使用JSON响应是很好的选择。

2.例子

下面的例子示范一个用户根据种类查看图书的示例,该服务器响应是N本图书信息,它们具有数据量较大,而且具有复杂的结构关系的特征,为此考虑使用JSON响应进行处理。

(源码)

1)        下面是提供服务器相应的Servlet代码。

 

@WebServlet(urlPatterns={"/chooseBook"})
public class ChooseBookServlet extends HttpServlet
{
	public void service(HttpServletRequest request ,
		HttpServletResponse response)
		throws IOException , ServletException
	{
		String idStr = (String)request.getParameter("id");
		int id = idStr == null ? 1 : Integer.parseInt(idStr);
		List<Book> books = new BookService().getBookByCategory(id);
		response.setContentType("text/html;charset=GBK");
		PrintWriter out = response.getWriter();
		out.println(new JSONArray(books));
	}
}

2) BookService是一个简单的业务逻辑组件,它直接使用了一个Map来模拟系统数据库。BookService类代码如下。

 public class BookService
{
	// 模拟内存中数据库
	static Map<Integer , List<Book>> bookDb =
		new LinkedHashMap<>();
	static
	{
		// 初始化bookDb对象
		List<Book> list1 = new ArrayList<>();
		List<Book> list2 = new ArrayList<>();
		List<Book> list3 = new ArrayList<>();
		list1.add(new Book(1 , "Java" , "owen" , 109));
		list1.add(new Book(2 , "Java EE" , "owen" , 99));
		list1.add(new Book(3 , "Android" , "owen" , 89));
		list2.add(new Book(4 , "西游记" , "吴承恩" , 23));
		list2.add(new Book(5 , "水浒" , "施耐庵" , 20));
		list3.add(new Book(6 , "乌合之众" , "古斯塔夫.勒庞" , 16));
		list3.add(new Book(7 , "不合时宜的考察" , "尼采" , 18));
		bookDb.put(1 , list1);
		bookDb.put(2 , list2);
		bookDb.put(3 , list3);
	}
	public List<Book> getBookByCategory(int categoryId)
	{
		return bookDb.get(categoryId);
	}
}

 

3)        当服务器向浏览器生成符合JSON格式字符串以后,浏览器端需要解析该JOSN字符串,将它解析成JavaScript对象或JavaScript数组。一旦将服务器响应数据“转换“成JavaScript对象或JavaScript数组,接下来使用DOM将响应显示出来即可。下面是JSON响应回调函数代码。

// 定义处理响应的回调函数
function processResponse()
{
	// 响应完成且响应正常
	if (xmlrequest.readyState == 4)
	{
		if (xmlrequest.status == 200)
		{
			var bookTb = document.getElementById("book");
			// 删除bookTb原有的所有行
			while(bookTb.rows.length > 0)
			{
				bookTb.deleteRow(bookTb.rows.length - 1);
			}
			// 获取服务器的JSON响应
			// 并调用eval()函数将服务器响应解析成JavaScript数组
			var books = eval(xmlrequest.responseText);
			// 遍历数组,每个数组元素生成一个表格行
			for (var i = 0 , len = books.length ; i < len ; i++)
			{
				var tr = bookTb.insertRow(i);
				// 依次创建4个单元格,并为单元格设置内容
				var cell0 = tr.insertCell(0);
				cell0.innerHTML = books[i].id;
				var cell1 = tr.insertCell(1);
				cell1.innerHTML = books[i].name;
				var cell2 = tr.insertCell(2);
				cell2.innerHTML = books[i].author;
				var cell3 = tr.insertCell(3);
				cell3.innerHTML = books[i].price;
			}
		}
		else
		{
			//页面不正常
			window.alert("您所请求的页面有异常。");
		}
	}
}

4)        运行结果



 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MiniUI是一个基于JavaScript的前端UI框架,用于构建Web应用程序的界面。MiniUI也可以通过与服务器进行交互,接收和发送JSON数据。 服务器接收JSON数据的过程可以通过以下几步来实现: 1. 在服务器端,首先需要创建一个接口或者路由来接收来自MiniUI的JSON数据。这个接口可以使用常见的后端开发框架来实现,比如Node.js的Express框架或者Java的Spring框架。 2. 在MiniUI中,将需要发送的JSON数据进行序列化。可以使用JavaScript中的JSON对象的stringify()方法来将对象转换为JSON字符串。 3. 使用MiniUI的Ajax方法来发送JSON数据到服务器。Ajax是一种通过JavaScript进行异步通信的技术,可以使用XMLHttpRequest对象来发送HTTP请求。在MiniUI中,可以使用mini.ajax()方法来发送Ajax请求,并设置请求的URL、请求方式、请求参数等。 4. 服务器端接收到MiniUI发送的JSON数据后,需要将JSON数据进行解析。可以使用相应的后端开发框架提供的JSON解析工具,将接收到的JSON字符串转换为对象。 5. 对接收到的JSON数据进行相应的处理操作。根据实际需求,可以对接收到的JSON数据进行验证、存储到数据库或者进行其他的业务逻辑处理。 6. 服务器端处理完JSON数据后,可以返回响应给MiniUI。可以将处理结果封装为JSON格式,并通过HTTP响应的方式返回给MiniUI。 总而言之,MiniUI可以通过Ajax方法向服务器发送JSON数据,服务器接收JSON数据后进行相应的处理操作,并返回响应给MiniUI。通过这种方式,MiniUI可以与后端进行数据交互,实现更多复杂的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值