2 loverestart LoveRestart 于 2016.09.14 09:41 提问

Servlet中设置的json,Ajax接收不到 1C

servlet代码:

                String succ = "false";
                JSONObject json = new JSONObject();
                json.put("succ", succ);
                PrintWriter pw = response.getWriter();
                System.out.println("json:"+json);
                pw.print(json.toString());
                pw.write(json.toString());
                return ;

JS代码:

            $.ajax({
                url:url,
                type:'post',
                dataType:'json',
                data:{
                    email:$('#name').val(),
                    pwd:$("#pwd").val(),
                    pwd2:$("#pwd2").val(),
                    number:$("#number").val(),
                    hoby:a.join(","),
                    check:$("#checked").val()
                },
                success:function(json){
                    alert("11");
                    alert(json);
/*                  alert(json);
                    var dd = eval("("+json+")");*/
                },
                error:function(){
                    alert("22");
                },
            })

最后执行的都是error,不知道是怎么回事!
控制台打印出来josn是:json:{"succ":"false"}

6个回答

u013076997
u013076997   2016.09.14 09:56

如果是执行的error,说明是你后台的代码应该出现了异常,你打个断点,看看到底是什么问题

Marksinoberg
Marksinoberg   Ds   Rxr 2016.09.14 09:57

Url必须是服务器上的servlet的路径

xubo_ob
xubo_ob   2016.09.14 10:06

你需要在servlet指定响应头类型信息 :
response.setContentType("application/json;charset:utf-8");
或者 response.setHeader("Content-Type","application/json;charset:utf-8");

不然后台如果传的是HTML,会有DIV等html元素加在返回元素里面,在页面的dataType:'json'进行转换的时候出错。

whangdiao1
whangdiao1   2016.09.14 10:12

打个断点看下能不能进servlet 如果不能进 很能是你的url路径没有指定

u013829202
u013829202   Rxr 2016.09.14 10:52

你的程序执行了error。 那么先确定你是前台还是后台出问题了。
如果不能进servlet,前台ajax就出问题了。 检查下url。 如果能进servlet,返回给ajax时直接执行了error,那后台逻辑有问题, 调试一下。 而且你的error还多了一个逗号

leopast
leopast   2016.09.14 15:19

应该是流没有刷新,给你个我写的实例

servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");
    response.setCharacterEncoding("utf-8");
    String method = request.getParameter("method");
    String result = "";
    if("showWorkList".equals(method)){
        result = showWorkList(request,response);
    }
    System.out.println(result);
    PrintWriter out = response.getWriter();  
    out.write(result);  
    out.flush();
}

js

 $.ajax({
    type: "post",
    dataType: "json",
    url: 'http://localhost:8080/work/WorkList?method=showWorkList',
    data: {pageSize : pageSize, pageIndex : pageIndex},
    success: function (obj) {
        var success = obj.success;
        if(success){
            var data = obj.data;
            alert(data);
        }else{
            alert(obj.msg);
        }
    },
    error: function(data) {
        alert("error:"+data.responseText);
    }
});
Csdn user default icon
上传中...
上传图片
插入图片