JQ的Ajax向Servlet发送josn数据和回传的数据问题 4C

问题:
1、sevlet中获取不到正确的参数值
2、sevlet回传的json值也获取不到
html中:

 <input type="submit" id="login" value="登录" onclick="checkLogin();return false;">

js中:

    $.ajax({
        type : "post",
        dataType : 'application/json',
        url : "./servlet/login.action",
        data : JSON.stringify(GetJsonData()),
        success : function(data) {
            var dataObj = data.person, 
            con = "";
            $.each(dataObj, function(index, item) {
                console.log(item.name);                                //1、这里没有结果
            });
        }

    });
}
function GetJsonData() {
    var perjson = {
        "name" : $("#name").val(),
        "psw" : $("#psw").val()
    };
    return perjson;
}

另外我在network中查看数据:{"name":"sa","psw":"sa"}: 这里后面有一个冒号,不知道是不是原因,也不知道从哪里来的

User类:
package com.junzhang.myblog.entity;

public class User {
private int id;
private String name;
private String psw;

public User(){

}
public User(int id, String name, String psw) {
    this.id = id;
    this.name = name;
    this.psw = psw;
}
public User(String name, String psw) {
    this.name = name;
    this.psw = psw;
}
public int getId() {
    return id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPsw() {
    return psw;
}
public void setPsw(String psw) {
    this.psw = psw;
}

@Override
public String toString() {
    // TODO Auto-generated method stub
    return super.toString();
}

}

servlet中:

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/json");
        PrintWriter out = response.getWriter();
        System.out.println("enter");
        String name = request.getParameter("name");
        String psw = request.getParameter("psw");
        System.out.println("name:" + name);   //2、null,这里获取不到
        System.out.println("psw:" + psw);       //null,这里获取不到

        // JSON对象
        response.setContentType("application/json");
        response.setContentType("text/xml;character=utf-8");
        response.setHeader("Cache-Control", "no-cache");
        try {
            User p = new User("小张", "123456");

            User p1 = new User("小王", "123");
            List<User> list = new ArrayList<User>();
            list.add(p);
            list.add(p1);
            JSONArray json = JSONArray.fromObject(list);
            JSONObject jb = new JSONObject();
            jb.put("person", json);
            out.write(jb.toString());      //这里利用的第三方net.sf.json.JSONObject,但是回去的json数据,ff浏览器说是不良好的格式
        } catch (Exception e) {
            e.printStackTrace();
        }
        out.flush();
        out.close();
        }

4个回答

dataType : 'application/json'应该改为dataType:"json",data参数直接用{"name":"sa","psw":"sa"}即data:{"name":"sa","psw":"sa"},
另外返回数据你直接用jb.put("pList",list);不就行了

oiu1010110
白日梦想jun 我直接这样写data:{"name":"sa","psw":"sa"} 后台也是获取到的是null
接近 3 年之前 回复

才用注解,类上加上注解@ResponseBody 然后直接return list;就可以了,这样是自动会帮你包装成json数据返回

1、dataType : 'json';
2、data :{
"name" : $("#name").val(),
"psw" : $("#psw").val()
}
不要把问题复杂化了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问