使用ajax接收后台发送过来的json数据方法

今天给大家带来一个简单的使用ajax接收后台返回json格式的demo

废话不多说直接上代码

后台代码

package com.sidan.outjson;

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;

import com.sidan.jsonutil.GetJson;
/**
 * Servlet implementation class OutJson
 */
@WebServlet("/OutJson")
public class OutJson extends HttpServlet {
	private static final long serialVersionUID = 1L;

 /**
  * @see HttpServlet#HttpServlet()
  */
 public OutJson() {
  super();
  // TODO Auto-generated constructor stub
 }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request,response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		String s = GetJson.getJson();
		out.print(s);
	}

}

Pserson类

package com.sidan.jsonutil;

public class Person {
	private String name;
	private String sex;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

}

将数据包装成json格式类(数据直接是循环添加的所以一样这里是为了简单)

package com.sidan.jsonutil;

import java.util.ArrayList;

public class GetJson {

	public static String getJson(){

		return json().toString();
	}

	public static StringBuffer json(){
		StringBuffer sb = new StringBuffer();
		ArrayList<Person> arr = initArray();
		int x = 0;
		sb.append("[");
		for(Person p:arr){
			sb.append("{");
			sb.append("\"name\"");
			sb.append(":");
			sb.append("\""+p.getName()+"\"");
			sb.append(",");
			sb.append("\"age\"");
			sb.append(":");
			sb.append("\""+p.getAge()+"\"");
			sb.append(",");
			sb.append("\"sex\"");
			sb.append(":");
			sb.append("\""+p.getSex()+"\"");
			sb.append("}");
			if(x != arr.size()-1){
				sb.append(",");
			}
			x++;
		}
		sb.append("]");
		return sb;
	}

	public static ArrayList<Person> initArray(){
		ArrayList<Person> arr = new ArrayList<Person>();
		for(int i = 0;i < 10;i++){
			Person p = new Person();
			p.setName("sdchen");
			p.setAge(20);
			p.setSex("man");
			arr.add(p);
		}
		return arr;
	}
}

jsp页面代码

<pre name="code" class="html"><%@ 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=ISO-8859-1">
<title>Insert title here</title>
<script src="jQuery/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
	$(function(){
		$("#btn").click(function(){
			var url = "OutJson";
			$.ajax({
				url:url,
				type:"post",
				dataType:"json",
				error:function(XMLHttpRequest, textStatus, errorThrown){
					alert(XMLHttpRequest);
					alert(textStatus);
					alert(errorThrown);
				},
				success:function(data){
					$.each(data,function(idx,obj){
						var li = document.createElement("li");
	     li.innerHTML = "<a>" + obj.name + "</a>";
	     document.getElementById("ul1").appendChild(li);
					});
				}
			});
		});

	});
</script>
</head>
<body>
	<ul id="ul1"></ul>
 <input type="button" value="循环" id="btn"/>
</body>
</html>

写这个demo也费了很大劲,毕竟是新手,也从错误中学到了很多,比如dataType写成datatype时ajax默认接收的数据是为text这样导致我总是循环不了,还有就是json数据的格式是非常严谨的

就因为最后多了一个逗号就导致总是出错,并且循环不了,最后将错误打印出来才知道这个格式是错了的

以上这篇使用ajax接收后台发送过来的json数据方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表

    对于问题从后台获取json数据,将内容填充到下拉列表,代码非常简单,具体过程请看下面代码. 需求:url:链接     par:ID       sel:下拉列表选择器 //获取下拉列表 function BuildSelectBox(url, par, sel) { $(sel).empty(); $.getJSON(url, { id: par }, function (json, textStatus) { for (var i = json.length - 1; i >= 0; i--

  • 利用ajax传递数组及后台接收的方法详解

    前言 我们在使用ajax异步的提交多选框得到需要操作的对象的id,这时我们可以把每一个id做出一个对象,之后放到一个数组中,再使用JSON.stringify()对这个数组进行json的格式化:在后台中再inputStream中解析出我们的json字符串,之后只用: new JSONArray()得到json数组,循环解析我们想要的属性: var countsCheckBox = $("input[type='checkbox']:checked"); var booksid = []

  • 浅析Ajax后台success传来json数据的问题

    最近在使用JQuery的ajax方法时,需要返回的数据为json数据,在success返回中数据处理会根据返回方式不同会采用不同的方式来生成json数据.在$.ajax方法中应该是如何来处理的,简单进行说明. 首先给出要传的json数据:[{"demoData":"This Is The JSON Data"}] 1,使用普通的aspx页面来处理 $.ajax({ type: "post", url: "Default.aspx&quo

  • jQuery使用ajax方法解析返回的json数据功能示例

    本文实例讲述了jQuery使用ajax方法解析返回的json数据功能.分享给大家供大家参考,具体如下: 最近在用jQuery的ajax方法传递接收json数据时发现一个问题,那就是返回的data数据,有时候可以直接作为json数据使用,可有时候又不行.查了些资料,解释如下: $.ajax({ url: ajaxurl, type: "POST", success: function(data){ //假设返回的json数据里有status及info2个属性 //有时候可以直接ajaxo

  • 使用ajax接收后台发送过来的json数据方法

    今天给大家带来一个简单的使用ajax接收后台返回json格式的demo 废话不多说直接上代码 后台代码 package com.sidan.outjson; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpSe

  • ext前台接收action传过来的json数据示例

    ext前台接收action传过来的json数据 复制代码 代码如下: Ext.Ajax.request({ method:'POST',//请求方式 params : {dagl_code:dagl_code}, url:lcwPath+"/daxt/lcgl.shtml?method=getJgBycode",//请求的url地址 success: function(response, opts) { if(response.responseText!='{}'){ alert(re

  • AJAX跨域请求JSONP获取JSON数据的实例代码

    Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序. 不过,由于受到浏览器的限制,该方法

  • ajax调用返回php接口返回json数据的方法(必看篇)

    php代码如下: <?php header('Content-Type: application/json'); header('Content-Type: text/html;charset=utf-8'); $email = $_GET['email']; $user = []; $conn = @mysql_connect("localhost","Test","123456") or die("Failed in conn

  • Python3 串口接收与发送16进制数据包的实例

    如下所示: import serial import string import binascii s=serial.Serial('com4',9600) s.open() #接收 n=s.inwaiting() if n: data= str(binascii.b2a_hex(s.read(n)))[2:-1] print(data) #发送 d=bytes.fromhex('10 11 12 34 3f') s.write(d) s.close() 以上这篇Python3 串口接收与发送1

  • Go处理json数据方法详解(Marshal,UnMarshal)

    json数据格式 参见json数据格式说明. 如果没操作过json数据,建议先看下上面的文章,有助于理解本文后面的内容. Go json包 Marshal():Go数据对象 -> json数据UnMarshal():Json数据 -> Go数据对象 func Marshal(v interface{}) ([]byte, error) func Unmarshal(data []byte, v interface{}) error 构建json数据 Marshal()和MarshalInden

  • Python 格式化打印json数据方法(展开状态)

    目的:Python 格式化打印json数据方法(展开状态) 环境: 系统:Win10 x64 环境: Pycharm Python 3.7.0 问题分析: Python下json手法的json在打印查看时,括号和数据都没有展开,查看起来比较困难. 解决方案: 使用json.dumps的separators设置,将数据展开格式化打印. 解决步骤: data = json.dumps(data, sort_keys=True, indent=4, separators=(', ', ': ')) 例

  • ajax接收后台数据在html页面显示

    Java代码 PrintWriter out=response.getWriter(); //向客户端发送字符数据 response.setContentType("text/text"); //设置请求以及响应的内容类型以及编码方式 response.setCharacterEncoding("UTF-8"); JSONArray json = JSONArray.fromObject(newsList); //将newsList对象转换为json对象 Strin

  • jQuery.ajax向后台传递数组问题的解决方法

    今天重温了一个问题,jQuery.ajax向后台传递一个数组,而在后台接收不到该值. 前台js方法部分代码如下: //创建一个测试数组 var boxIds = new Array(); boxIds.push(12182); boxIds.push(12183); boxIds.push(12184); //向后台交互 $.ajax({ url: "/xxx", type: "GET", data: { "boxIds": boxIds, &q

  • jquery的ajax和getJson跨域获取json数据的实现方法

    很多开发人员在使用jquery在前端和服务器端进行数据交互,所以很容易会认为在前端利用jquery就可以读取任何站点的数据了.近日在进行开 发时,因为要和第三方公司的一个项目进行数据的共享,因为考虑多不占用服务器的资源,遂决定直接在html进行数据的读取,不走服务器端进行中转了.然后 正好就遇到了浏览器端跨域访问的问题. 跨域的安全限制都是指浏览器端来说的,服务器端不存在跨域安全限制的问题. 目前浏览器端跨域访问常用的两种方法有两种: 1.通过jQuery的ajax进行跨域,这其实是采用的jso

随机推荐