来自AJAX调用的GET或POST请求未被处理

时间:2017-10-04 11:11:26

标签: java ajax spring jsp http

调用AJAX请求后出现此错误。 控制正在服务器端,所有进程都正常工作。但是在调用控制器代码之前我得到了这个错误并且在这里停留了。

JSP

<form id="pop-up3reset">
..................
<input type="submit" value="Send" id="manualModePopupSave" />

Ajax Call

$(document).ready(function() {
$('#manualModePopupSave').click(function() {
 var userno=$('#userno').val();
 var on_off1 = $('#pop-up3onoff1').is(':checked') ? 1 : 0;
 var search = {
 "user_no" : userno,
 "onoff1" : on_off1
 };

var myJsonStringsearch = JSON.stringify(search);
alert(myJsonStringsearch);
$.ajax({
type : "POST",
url : "setManualModeForAjax",
contentType : "application/json",
async : true,
cache : false,
data : myJsonStringsearch,
dataType : 'json',
success : function(response) {
    $('#onoff1').val(response.onoff1);
if(response.errorMessage == "-1"){
    sweetAlert("not in communication", "","error");
}else if(response.errorMessage == "M,1"){
    sweetAlert("Request is Not Reachable", "","error");
}
},
});
});
});

控制器

@RequestMapping(value = {"/setManualModeForAjax"}, method = RequestMethod.POST, produces = "application/json")
public @ResponseBody ManualModeFromAjax setManualMode(@RequestBody ManualModeFromAjax manualModeFromAjax)throws Exception
{
    System.out.println("In manual mode for AJAX request");
    ....................
    return manualModeFromAjax;
}
  

org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleHttpRequestMethodNotSupported   警告:请求方法&#39; POST&#39;不支持   org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleHttpRequestMethodNotSupported   警告:请求方法&#39; GET&#39;不支持

网络

  

请求网址:http://localhost:8080/PROJECT/login

     

请求方法:GET

     

状态代码:405方法不允许

     

远程地址:[:: 1]:8080

请帮忙

1 个答案:

答案 0 :(得分:2)

这是因为您的按钮是submit按钮,而不仅仅是button。因此,当您单击按钮时,将执行绑定到操作的javascript方法,但您不会阻止默认操作,因此表单也会以x-www-form-urlencoded的形式发送,因为,我只是在猜测,您的控制器只是准备好了处理form-urlencoded请求时,如果您收到请求方法不受支持错误。

您有不同的选择。你可以:

  • 使用button作为按钮的类型,而不是submit
  • 使用Event.preventDefault
  • 只是在你的javascript方法上返回false

你的javascript应该是这样的:

$('#manualModePopupSave').click(function(e) {
    //Use this...
    e.preventDefault();

    var userno=$('#userno').val();

    ....

    //or this.
    return false;
});