控制器不接受POST 404数据

时间:2015-03-02 21:22:11

标签: java ajax spring model-view-controller

请帮助我,我正在使用spring mvc在java ee上编写一个站点,我需要将请求发送到servlet,但是我收到错误404.

我的HTML

<input type="button" value="add" onclick="sendRequest()">

我的js:

function sendRequest(){
var str = "this is string";
    $.ajax({
            url:"ajaxtest",
            type:"POST",
            //data:JSON.stringify(myJson).toString(),
            data:str,
            success: alert("good")
        });}

我的控制器:

@RequestMapping(value="ajaxtest", method=RequestMethod.POST)
    public void getAjax(String myStr){
        System.out.print("result : "+myStr);
    }

结果控制台浏览器:

POST http://localhost/MyProject/ajaxtest 404 (Not Found)
m.ajaxTransport.send - jquery-1.11.2.min.js:4 
m.extend.ajax - jquery-1.11.2.min.js:4
sendRequest - add.jsp:139
onclick - add.jsp:213

结果控制台ide:

INFO: Server startup in 2991 ms
result : null

请帮助我!

2 个答案:

答案 0 :(得分:1)

要使其发挥作用,您需要完成几件事。我的回答是基于帖子中的信息。

你的ajax数据必须是一个像下面这样的键值对才能发送一个简单的字符串。

function sendRequest(){
var str = "this is string";
    $.ajax({
            url:"ajaxtest",
            type:"POST",
            //data:JSON.stringify(myJson).toString(),
            data:{myStr:str},
            success: alert("good")
        });}

你必须告诉spring如何在控制器方法上解析myStr,否则Spring将无法知道如何解决它。在我们的例子中,我们将使用@RequestParam注释,它告诉spring从请求参数中获取它。

@RequestMapping(value="ajaxtest", method=RequestMethod.POST)
    public void getAjax(@RequestParam String myStr){
        System.out.print("result : "+myStr);
    }

答案 1 :(得分:0)

在您的控制器中,更改:

public void getAjax(String myStr) {

为:

public void getAjax(@RequestBody String myStr) {

@RequestBody告诉Spring使用请求的内容作为控制器方法的参数。