2 y bei Y_Bei 于 2016.03.09 16:43 提问

利用ajax获得后台传过来的json,前端无法解析,对前端不是很深入,求指导

这是servlet:
package com.kj.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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

import net.sf.json.JSONArray;

import com.kj.entity.User;
import com.kj.service.IUserService;
import com.kj.service.impl.UserServiceImpl;

public class MainPageServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

    HttpSession session = req.getSession();
    IUserService service = new UserServiceImpl();
    String user_id = req.getParameter("user");
    //可通过传参实现当前页面第一层节点的转换
    if(user_id == null){
        //若无参数,使用当前登陆用户
        user_id = session.getAttribute("user").toString();
    }
    //当前主页第一节点的user
    User current_user = service.getUserMessageByid(user_id); 

    List<User> sonUsers = service.getSonUser(current_user.getLeft_num(), current_user.getRight_num(), current_user.getUser_level());
    List<User> thrid_user =new ArrayList<User>();;
    int i = 0;
    for(User user:sonUsers){

        if(user.getUser_level() == current_user.getUser_level()+1){
            //展示第二层级
            switch(i){
                case 0 : 
                    req.setAttribute("user_1", user);
                    break;
                case 1 :
                    req.setAttribute("user_2", user);
                    break;
                default :
                    req.setAttribute("user_3", user);
                    break;  
            }
            i++;
        }else{

            thrid_user.add(user);
        }
    }


    //想将下面的array到前端,list转换为json没问题
    JSONArray array = JSONArray.fromObject(thrid_user);

    resp.getWriter().write(array.toString());
    req.setAttribute("current_user", current_user);
    req.getRequestDispatcher("main.jsp").forward(req, resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    doGet(req, resp);
}

}

这是js:
$(function(){

$.ajax({
    url:"main.do",
    type:"GET",
    success:function(msg){
        var user = eval("("+msg+")");
        alert(user.toString());
    },
    error:function(er){
        console.log(er);
    }
});

})

这样写页面报错:Uncaught SyntaxError: Unexpected token < 。。。

3个回答

kiansoung
kiansoung   2016.03.09 17:15
已采纳

你用ajax异步请求,响应的时候却是跳转页面!不需要跳转页面!

Y_Bei
Y_Bei 我还想问问 因为我是 登陆 然后 跳转(main.do)到主页面(main.jsp),我想在 servlet中将值传到jsp页面中,该怎么写ajax。
2 年多之前 回复
Y_Bei
Y_Bei .。。。。原来梗在这里 梳理了半天 把跳转注释掉就拿到了 对ajax执行还不深入
2 年多之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.03.09 17:00

你先alert(msg),,弹出来看下是什么格式的数据

Y_Bei
Y_Bei $.ajax({ url:"main.do", type:"GET", success:function(msg){ alert(msg); }, error:function(er){ console.log(er); } }); 这样写的话弹出来的是对应jsp页面的源码。。。我郁闷
2 年多之前 回复
xcdnh001
xcdnh001   2016.03.09 17:52

ajax 写到write就行,不要用request或者response跳转,前面$.ajax({dataType : 'json',})给添加这个数据类型,就会自动将你传过来的 json值解析成
json数据,然后你就可以msg.key遍历了,key是你在后台写的

Y_Bei
Y_Bei 好的 谢谢
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
前端对后台传过来是数组进行重新排序显示
var result = $.util.requestAjaxData('/admin/portal/listActivities.do'); result 为后台查询出来的数组数据 result.sort(getSortFun('asc','aiId')) 我在前台对数据进行根据id排序 function getSortFun(order, sortBy) { var
前端接收不到后台发来的JSON问题原因
昨天在做一个头像上传的功能,要求选择完成图片以后立刻完成上传功能并且在页面上显示,需要用到异步上传,就是用了ajaxSubmit()进行表单的上传操作,但是不管怎么弄前台都接收不到后端发来的json数据,设置dataType为text倒是能接收到,郁闷了好长时间。
前端ajax获取从后台传回的数据
这个是官网的地址 https://aui.github.io/art-template/zh-cn/docs/api.html 这里的数据全是从后台传过来的,今天说一下如何操作。 jsp页面: &amp;lt;div class=&quot;concrete-message&quot;&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;script type=&quot;text/html&quot; id=&quot;result-tpl&quot;...
JFINAL+Ajax传参 array 数组方法 获取request中数组
前台代码jsvar _list =[]; for (var i = 0; i &amp;lt; array.length; i++) { _list[i] = array[i]; } $.ajax({ type: &quot;post&quot;, url: &quot;&quot;, ...
java后台处理前端传的json串
关于json,就不在多做介绍了,直接进入正题: 举例子: 1.现在前台做了一个Ajax请求,往数据库中添加数据:  var json='{"goodName":"果粒橙","goodTitle":"这是一种好喝的","goodMessage":"这个很好喝,你还想喝 吗。。。。。。。。","goodCost":"2","goodPrice":"2.5","goodPicture":"ima
JS前端取得并解析后台服务器返回的JSON数据的方法
摘要:主要介绍:使用eval函数解析JSON数据;$.getJSON()方法获得服务器返回的JSON数据 JavaScript eval() 函数 eval(string) 函数可计算某个字符串,并执行其中的的 JavaScript 代码。   参数string:要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 该方法只接受原始字符串作为
前端ajax传值后台接收并写入数据库
前端与后台之间的数据传输。。。
Gson处理前端传递过来的Json对象数组
如何从前端传递Json对象数组到后台 场景:给后台传递对象数组,后台通过Gson解析,并把对象存放到List集合里面。在使用Gson前导入Gson的jar包gson-1.4.jar,在jar包里面有其核心类:Gson,JsonParser,JsonObject,JsonArray,这些核心类在后面都有使用。 使用JQuery的ajax传递Json数据到后台 <!DOCTYPE HTML PUBL
获取前端post方式传过来的JSON格式的数据的代码
public JSONObject getRequestContent(HttpServletRequest req) { JSONObject data = null; try { InputStream is = req.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReade
后台struts2如何接收前端传来的json数组
后台struts2如何接收前端传来的json数组struts2通过json接收普通参数,只需在相应的Action类中定义变量,并用getter和setter即可获取。然而,要怎么获取接收数组类的json数据呢?