用Ajax实现对数据的异步展示

对于一些场景,展示数据用异步的方式会更好,后端将数据转成 json的格式以便前端接受获取,而后台的数据一般来说是一个 list集合,list集合里面一个或者多个map<String,Object>,在后端可以将 list转成 json后传到前端(后端数据以String的形式传到前端,不过String的内容是一个或一组 json数组),具体可以这样:

public String listTojson(List<Map<String, Object>> list) {
    StringBuilder json = new StringBuilder();
    json.append("[");
    if (list != null && list.size() > 0) {
        for (Map<String, Object> map : list) {
        	json.append(new JSONObject(map)); //这里使用了org.json.JSONObject这个类 把map转换成json对象(需要导入jar包 org.json.jar)
        	json.append(",");
    	}
        json.setCharAt(json.length() - 1, ']');
    } else {
        json.append("]");
    }
    return json.toString();
}

以上代码转自:Java中list转换成json数组

下面代码是自己参考后改的

@RequestMapping("/search/wacth_ajax_list.jspx")
public void ajaxQueryWorkLog(HttpServletRequest request,HttpServletResponse response,String zbry,String dateq,String datez) throws JSONException {
	List<CmsWorkLog> list = cmsWorkLogMng.getListByWhere(dateq, datez, zbry);
	StringBuilder json = new StringBuilder();
	json.append("[");
	if (list != null && list.size() > 0) {
		Map map = new HashMap<String, Object>();
		for (CmsWorkLog workLog : list) {
			map.put("watch_time",workLog.getWatch_time());
			map.put("personnel",workLog.getPersonnel());
			map.put("address",workLog.getAddress());
			map.put("phone",workLog.getPhone());
			json.append(new JSONObject(map)); //这里使用了org.json.JSONObject这个类把map转换成json对象(需要导入jar包 org.json.jar 导入jar包 org.json.jar)
			json.append(",");
		}
		json.setCharAt(json.length() - 1, ']');
	} else {
		json.append("]");
	}
	//工具类
	ResponseUtils.renderJson(response, json.toString());
}

这种是直接以json的格式传到前端,接下来就是前端的展示了

/*	zbry,dateq,datez用jQuery获取 
	var zbry = $("#zbry").val();
	var dateq = $("#dateq").val();
	var datez = $("#datez").val();
*/
function ajaxSearch(zbry,dateq,datez) {
	$.ajax({
		traditional: true,
		type: "post",
		url: "${base}/search/wacth_ajax_list.jspx",
		data:{"zbry":zbry,"dateq":dateq,"datez":datez},
		success:function(data){
			//清空原先展示的数据(内容)
			$("#dataTable").html('');
			//遍历异步获取的数据,用append追加
			$.each(data,function (n,WorkLog) {
			//(WorkLog.watch_time).substring(0,10) 字符串截取
				$("#dataTable").append("" +
					"<div class='table_item_tr'>\n" +
						"<div class='table_item_td'>\n" + (WorkLog.watch_time).substring(0,10)+ "</div>\n" +
						"<div class='table_item_td'>\n" + WorkLog.personnel+"</div>\n" +
						"<div class='table_item_td'>\n" + WorkLog.address+"</div>\n" +
						"<div class='table_item_td'>\n" + WorkLog.phone+"</div>\n" +
					"</div>"
				)
			})
		}
	});
}

附上工具类:

package com.jeecms.common.web;

import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * HttpServletResponse帮助类
 */
public final class ResponseUtils {
	public static final Logger log = LoggerFactory.getLogger(ResponseUtils.class);
	/**
	 * 发送文本。使用UTF-8编码。
	 * 
	 * @param response
	 *            HttpServletResponse
	 * @param text
	 *            发送的字符串
	 */
	public static void renderText(HttpServletResponse response, String text) {
		render(response, "text/plain;charset=UTF-8", text);
	}

	/**
	 * 发送json。使用UTF-8编码。
	 * 
	 * @param response
	 *            HttpServletResponse
	 * @param text
	 *            发送的字符串
	 */
	public static void renderJson(HttpServletResponse response, String text) {
		render(response, "application/json;charset=UTF-8", text);
	}

	/**
	 * 发送xml。使用UTF-8编码。
	 * 
	 * @param response
	 *            HttpServletResponse
	 * @param text
	 *            发送的字符串
	 */
	public static void renderXml(HttpServletResponse response, String text) {
		render(response, "text/xml;charset=UTF-8", text);
	}

	/**
	 * 发送内容。使用UTF-8编码。
	 * 
	 * @param response
	 * @param contentType
	 * @param text
	 */
	public static void render(HttpServletResponse response, String contentType,
			String text) {
		response.setContentType(contentType);
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		try {
			response.getWriter().write(text);
		} catch (IOException e) {
			log.error(e.getMessage(), e);
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值