利用jQuery.form.js 提交表单,返回json类型数据时报错

 前台代码 

       function submit(){
            var options = {
                url:"student.do?method=publishResumeInfo",
                type:"post",
                dataType:"json",
                success:function(result){
                    alert(result);
                },error:function(xhr){
                    alert("请求失败!");
                }
            };

            $("#fbjlform").ajaxSubmit(options);return false;
          }

后台响应代码

        // 把文件数据json格式化
        String jsonString = "";
        JSONObject resultJson = JSONObject.fromObject(obj);
        if (resultJson != null) {
            jsonString = resultJson.toString();
        }
        // 写到客户端,页面展示.
        try {
            response.setContentType("application/x-json");
            response.setCharacterEncoding("utf-8");
            // 数据库编码为GBK 取出数据后要显示转码
            response.getOutputStream().write(jsonString.getBytes("utf-8"));
            response.flushBuffer();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return;

 

这样子options回调会进入error里面,如果把response.setContentType("application/x-json"); 屏蔽掉则会进入success回调,结果为正常的json对象。

然而普通的ajax请求,并不会出现这样的问题。
 

 

前台代码 

       function submit(){
            var options = {
                url:"student.do?method=publishResumeInfo",
                type:"post",
                dataType:"text",
                success:function(result){
                    alert(result);
                },error:function(xhr){
                    alert("请求失败!");
                }
            };

            $("#fbjlform").ajaxSubmit(options);return false;
          }

后台响应代码

        // 把文件数据json格式化
        String jsonString = "";
        JSONObject resultJson = JSONObject.fromObject(obj);
        if (resultJson != null) {
            jsonString = resultJson.toString();
        }
        // 写到客户端,页面展示.
        try {
            response.setContentType("application/x-json");
            response.setCharacterEncoding("utf-8");
            // 数据库编码为GBK 取出数据后要显示转码
            response.getOutputStream().write(jsonString.getBytes("utf-8"));
            response.flushBuffer();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return;

 

如果把dataType类型设置为text,且不屏蔽response.setContentType("application/x-json");,

则success回调接收结果为 。

如果把response.setContentType("application/x-json");屏蔽,

则success回调接收结果为(json数据)。

 

 

如果把dataType类型设置为script,且不屏蔽response.setContentType("application/x-json");,

则success回调接收结果为 空字符串。

如果把response.setContentType("application/x-json");屏蔽,

则success回调接收结果为(json数据)。

 

 

你可能感兴趣的:(javaweb)