spring mvc ajax success不执行 反倒执行error

问题描述:spring mvc中前端使用ajax发送请求,后台使用@ResponseBody直接写数据到响应体中,

返回一个字符串,ajax的success回调函数不执行,反而执行error的回调函数

上代码:

ajax请求:

$.ajax({
                url:"/eCommerceSSM/updateAdmin",
                type:"put",
                data:JSON.stringify({admin_id:$("#form_update_admin input[name=‘admin_id‘]").val(),
                    admin_name:$("#form_update_admin input[name=‘admin_name‘]:not(:disabled)").val(),
                    admin_password:$("#form_update_admin input[name=‘pwd‘]:not(:disabled)").val()
                }),
                dataType:"json",
                contentType: "application/json;charset=utf-8",
                success:function(data){
                    console.log("update admin is returned");
                    console.log("======"+data.msg+",");
                    //修改失败
                    alert(data.msg+"---ddddd");
                    if(data.msg=="fail"){
                        alert("修改失败,可能用户名已被占用");
                    }else{
                        alert("修改成功");
                        showAdminList(curPage,pageSize);
                        $("#updateAdmin").modal("hide");
                    }

     },error:function(error){

      console.log(error);

      //此处可以打印出响应的信息,响应状态也是200,响应的字符串也存在属性responseText中,数据库修改成功了

    }  

})

controller:

//修改admin
    @RequestMapping(value="/updateAdmin",method=RequestMethod.PUT)
    @ResponseBody
    public String updateAdmin(@RequestBody Admin admin) {
        String msg=null;
        System.err.println("new admin:"+admin);
        if(as.updateAdminPart(admin)>0) {
            System.err.println("修改admin成功。。。。");
            msg="success";
        }else {
            System.err.println("修改admin失败.......");
            msg="fail";
        }
        return msg;
    }

我的项目中相关配置:

//将spring mvc的响应对象自动转成json格式

<!-- 自动将查询到的数据,转成json格式 -->
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.5</version>
    </dependency>

最后问题的解决:

将controller中代码返回值改成ModelMap,将响应的字符串放入

//这个问题的造成原因:  data:JSON.stringify({admin_id:$("#form_update_admin input[name=‘admin_id‘]").val(),
                    admin_name:$("#form_update_admin input[name=‘admin_name‘]:not(:disabled)").val(),
                    admin_password:$("#form_update_admin input[name=‘pwd‘]:not(:disabled)").val()
                })

为什么怀疑是这个呢?因为我有一个添加的ajax请求,data也是使用JSON.stringify()进行的转换,也会出现响应成功了,但是不执行success的回调函数;

我将data的JSON.stringify()去掉就用普通的data:{}形式就可以正常的执行success

//希望能帮到你。。们

原文地址:https://www.cnblogs.com/gqblogs/p/springmvc-ajax-art1.html

时间: 2024-10-12 11:24:23

spring mvc ajax success不执行 反倒执行error的相关文章

spring mvc web应用启动时就执行特定处理(线程启动)

package com.sdt.platform.index.controller; import java.net.URL; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.annotation.Resource; import org.springframework.beans.BeansException; import org.sprin

spring mvc+ajax 实现json格式数据传递

使用ajax传递JSON对象 下面示例为ajax发送json对象,返回json格式数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 $.ajax({ url: "api/user", type: "POST", timeout: txnTimeOut, async: true, dataType: "json", data: {username : "lucy"}

spring mvc ajax 提交复杂数组类型

The server refused this request because the request entity is in a format not supported by the requested resource for the requested method 1.Spring Mvc 配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp

summernote + spring mvc + ajax 上传图片 &lt;笔记&gt;

最近在做一个考试系统项目.其中实体答案有这样的需求,答案A,B,C,D 采用 文本和图片混搭的形式,并且文本也是富文本. 数据库中大概是这么存的 废话不多说开始上干货.... 一.首先在jsp页面导入文件 二.接着进行,summernote的初始化  ,这里我初始化了很多个 --------------------------------------------------- 效果图: 三.summernote的默认图片上传是直接将图片进行base64编码,然后放在,img标签的data(记不太

spring mvc ajax请求

jar包中增加 jackson-annotations-2.5.0.jar jackson-core-2.5.0.jar jackson-databind-2.5.0.jar springmvx.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="

Spring MVC之适配器的获取及执行(RequestMappingHandlerAdapter)

首先看下doDispatch()方法如何找到适合的适配器来执行方法的: 1 protected HandlerAdapter getHandlerAdapter(Object handler) throws ServletException { 2 Iterator i$ = this.handlerAdapters.iterator(); 3 4 HandlerAdapter ha; 5 do { 6 if (!i$.hasNext()) { 7 throw new ServletExcept

如何让spring mvc web应用启动时就执行特定处理

Asp.Net的应用中通过根目录下的Global.asax,在Application_Start方法中做一些初始化操作,比如:预先加载缓存项对网站热点数据进行预热,获取一些远程的配置信息等等. Spring-MVC的应用中,要实现类似的功能,主要是通过实现下面这些接口(任选一,至少一个即可) 一.ApplicationContextAware接口 package org.springframework.context; import org.springframework.beans.Beans

spring mvc ajax file upload

function ajaxFileUploadPic(projectId,name,type) { $.ajaxFileUpload({ url : '${ctx}/projectPic/saveorupdate.jhtml?projectId='+projectId+'&name='+name+'&type='+type, //用于文件上传的服务器端请求地址 secureuri : false, //一般设置为false fileElementId : 'file', //文件上传空间的

spring mvc+ajax分页

分页大致思路:页面每次把当前页传到后台并获得从后台传过来的json数据,解析后布局到这个页面上. 1.服务端代码: @Controller public class MemcachedContrller { @Autowired private MemcacheReadService memcacheRead ; private static final Logger LOG = Logger.getLogger(MemcachedContrller.class); //页面初始化 @Reque