页面直接显示了异步请求的json数据?

我在页面发送异步请求,后台对数据进行处理后返回json字符串,前台并没有进入到success或者error语句块,就直接显示了返回的json字符串。

异步请求:

            jQuery.ajaxFileUpload({
                    secureuri:false,
                    type : 'POST',
                url : 'web/contactsInfo/importExlSave',
                fileElementId : 'excelFile',
                dataType : 'json',
                data : {
                        "projectId":${projectId}
                    },
                success : function(data) {
                    if(data.state=='success') {
                        toastr.success("人员导入完成!","系统消息");
                        $('#modal').modal('hide');
                        $('#tab').bootstrapTable('refresh', {url: 'web/contactsInfo/contactsInfoList?projectId=${projectId}'});
                    } else {
                        toastr.error("人员导入出现异常!","系统消息");
                    }
                },
                error : function(data) {
                    toastr.error("系统发生异常!","系统消息");
                }
            });

请求的处理方法

    public @ResponseBody Map<String,Object> importExlSave(MultipartFile excelFile,HttpServletRequest request,HttpServletResponse response){
        String parameter = request.getParameter("projectId");
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("state", "success");
        map.put("message", "完成!");
        return map;
    }

关于将对象转成json字符串的配置

     <!-- 返回json格式配置开始 -->
   <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
   <property name="supportedMediaTypes">
    <list>
     <value>text/html;charset=UTF-8</value>
    </list>
   </property>
  </bean>

  <!-- 解决Spring MVC返回json视图时,如何将对象直接序列化成不带变量名做为根节点的 json 报文
   <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
        <property name="extractValueFromSingleKeyModel" value="true" />
   </bean>
     -->

   <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
   <property name="messageConverters">
    <list >
     <ref bean="mappingJacksonHttpMessageConverter" />
    </list>
   </property>
  </bean>
  <!-- 返回json格式配置结束 -->

大概就是这样。
我提交请求后得到的响应是这样的:
图片说明
跪求大神帮助

如果觉得我给的不够详细,可以提出来,我补充

6个回答

谢谢各位大神的解答了。找到问题了,是我的ajaxfileupload的版本有问题。更换一个问题就解决了

暂时没看出来是哪的问题,你这个json是前台页面显示出来的吧,我建议你可以用js alert一下或者console.info打印出来,看看响应前端的data数据,
也有可能响应过来的并不是json数据,而是字符串所以无法解析,然后试下这个JSON.parse(),楼主尝试一下吧

qq_36503474
丶小财 回复479925485:问题解决了。谢谢了~~
接近 3 年之前 回复
apbbbbb
旋转的钢笔 回复qq_36503474: 你这个map有点特殊啊,你先返回个对象试试,看看前台能不能返回json,如果还不行,检查下配置,可以参考这个 http://snowolf.iteye.com/blog/1628861
接近 3 年之前 回复
qq_36503474
丶小财 我用alert 在success语句中打印来着,但是没有执行到
接近 3 年之前 回复

data : { "projectId":${projectId} }

你的${projectId}是数字没有?不是这句会导致错误,如字符串(变为变量)或者其他不符合js语法的代码会出错,要用引号括起变为字符串

data : { "projectId":'${projectId}' }

而且你是什么按钮触发的代码?如果是放在表单中的submit,image之类的提交按钮会提交表单,你的js代码根本没执行,要记得阻止表单提交

qq_36503474
丶小财 确实是忘记加''了,多谢~~
接近 3 年之前 回复

把data数据转成json对象...

qq_36503474
丶小财 我这在配置文件中配置了 , 他会把对象转换成json字符串的
接近 3 年之前 回复

楼主这个是有filter么?不用 @RequestMapping("")?

qq_36503474
丶小财 写@RequestMapping了,没在这里写
接近 3 年之前 回复

数据返回成功,但是没有走你的逻辑。应该是对data没有解析,将data变成json对象:eval(data)或者用json的内置对象转化试试

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