Spring-MVC中的AJAX POST请求不起作用

时间:2018-01-30 03:35:48

标签: javascript java ajax spring spring-mvc

我正在学习Spring MVC,我一直坚持如何使用AJAX从客户端发送一个简单的字符串值并在JAVA服务器(控制器)上打印它。我写了下面的代码来做这件事。但是,当我单击按钮发送字符串时,我的浏览器会弹出error....响应,浏览器控制台会显示POST http://localhost:8090/addUser 404 ()。我试图解决这个问题已经有一天了。有人可以告诉可能是什么问题吗?或者请告诉一个可行的替代解决方案,使用AJAX从客户端发送数据并在JAVA服务器(Spring-MVC)上打印/保存。

UserController.java

@Controller
public class UserController {

    @RequestMapping(value = "/addUser", method = RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE, produces=MediaType.APPLICATION_JSON_VALUE)
    public JSONArray addUser(@ModelAttribute("UserTest") JSONArray name) {
        System.out.println(name.toString());
        return name;
    }
}

AJAX请求:

<script>
    function addUser() {
        var json = '{"uname":"John", "Age":42}';
            obj = JSON.parse(json);
            $.ajax({
                    url : "/addUser",
                    data : obj,
                    type : "POST",
                    async: false,
                    contentType: "application/json",
                    success : function(response) {
                             alert( response );
                    },
                    error : function() {
                        alert("error...."); //this is being popped-up in my browser     
                    }
            });
       }
</script>

2 个答案:

答案 0 :(得分:0)

  

POST http://localhost:8090/addUser 404()

您的请求将转到http://localhost:8090/addUser,这是不正确的。您的请求网址应该包含您的申请并包含在内。

http://localhost:8090/<app_name>/addUser

AFAIK,您的请求网址应包含应用程序名称。现在,要实现这一点,您可以更改您的ajax url

 url : "/<app_name>/addUser"

答案 1 :(得分:0)

ajax调用的URL不正确。它应该像

地址:YourApplicationContextPath / ControllerName / ADDUSER