请帮助我,我正在使用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
请帮助我!
答案 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使用请求的内容作为控制器方法的参数。