zhangkang
新手
新手
  • UID52
  • 粉丝4
  • 关注2
  • 发帖数9
  • 社区居民
阅读:9450回复:3

如何快速明了提取server.call回调函数的返回值

楼主#
更多 发布于:2016-04-06 17:48
var param={     component:"JavaCallMixFileController",
 method:"select1",
 data:[{id:id}],
 callBack:function(ret){// alert(ret[0].elements[0].key + " = " + ret[0].elements[0].value);
// alert(ret[0].elements[1].key + " = " + ret[0].elements[1].value);
// alert(ret[0].elements[2].key + " = " + ret[0].elements[2].value);
// alert(ret[0].elements[3].key + " = " + ret[0].elements[3].value);
[zhangkang于2016-04-06 20:20编辑了帖子]
Rain
风云使者
风云使者
  • UID2
  • 粉丝15
  • 关注12
  • 发帖数264
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
沙发#
发布于:2016-04-07 14:47
409232112:首先看一下java里数据返回格式处理
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.M...
回到原帖
谢谢分享!
世上本没有路,走的人多了,便变成了路.
409232112
骑士
骑士
  • UID103
  • 粉丝2
  • 关注0
  • 发帖数30
  • 社区居民
板凳#
发布于:2016-04-06 22:44
首先看一下java里数据返回格式处理
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

import org.hibernate.transform.Transformers;

import com.sunsheen.jfids.system.database.DBSession;
import com.sunsheen.jfids.system.servlet.Servlet;
import com.sunsheen.jfids.util.DataBaseUtil;

@Servlet(value="/TestServlet.svt", anonymous=true)
public class TestServlet extends HttpServlet{
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
 request.setCharacterEncoding("UTF-8");
 response.setCharacterEncoding("UTF-8");
 response.setContentType("text/plain;charset=utf-8");
 DBSession hibernateSession = DataBaseUtil.getHibernateSession();
 List<Map> resultList=hibernateSession.createSQLQuery("select * from test").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
 JSONArray retData = JSONArray.fromObject(resultList);
 PrintWriter out = response.getWriter();
 out.print(retData);
 out.flush();
 out.close();
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
 doGet(request, response);
 }
}

这里查询的结果是一个List<map>的数据,查询结果如下图

图片:1.jpg



这里需要用到
JSONArray retData = JSONArray.fromObject(resultList);
处理下,由于这里用的是大数据平台,没有支持JSONArray 的jar包,附件提供了需要的jar包,(4.0平台是内置的)

再看一下前台js
$(document).ready(function(){
        $.ajax({
                url:"/ChengDuGBD/TestServlet.svt",
                type:"POST",
                data:{

                },
                success:function(result){
                        var html="";
                        resultList=eval(result);
                        for(var n=0;i<resultList.length;n++){
                                html+="<p>"+resultList[n].name+"<p>";
                        }
                        $(".test").html(html);
                }
        });
})

在接收到result后通过 eval(result)处理一下,就可以直接通过resultList[n].属性名获取对应值了

html代码如下:
<!DOCTYPE HTML>
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery-1.11.3.js"></script>
<script src="js/test.js"></script>
</head>
<body>
<div class="test">
</div>
</body>
</html>
运行结果如下图

图片:2.jpg

附件名称/大小 下载次数 最后更新
所需jar包.rar (219KB)  1 2016-04-06 22:43
best_for_ys
  • UID89
  • 粉丝
  • 关注
  • 发帖数
地板#
发布于:2016-04-06 20:25
server.call回调函数的返回值ret是一个数组内嵌map的结构,所以我们首先要遍历数组,然后和Java一样去获取map数据,代码如下:
for (var i = 0; i &lt; ret.length; i++) {   
      // ret[i]=map,即map.get('text')
      alert(ret[i].get('text'));
}
游客

返回顶部