2017-10-04 118 views
2

在調用AJAX請求後出現此錯誤。 控制正在打到服務器端,所有進程工作正常。但是在調用控制器代碼之前,我得到了這個錯誤,並將其自身封裝在這裏來自AJAX調用的GET或POST請求沒有被處理

jsp的

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

Ajax調用

$(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 警告:請求方法 'POST' 不支持 org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleHttpRequestMethodNotSupported 警告:請求方法 'GET' 不支持

網絡

請求URL:http://localhost:8080/PROJECT/login

請求方法:GET

狀態代碼:405不允許的方法

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

請幫

+0

也許這會幫助你:https:// stackoverflo w.com/questions/15699350/spring-request-method-post-not-supported –

+0

謝謝你的回覆..我已經嘗試過了。我的問題是隻使用Ajax調用。在網絡中它說'GET'的 – Hema

+0

? –

回答

2

這是因爲你的按鈕是一個submit之一,而不只是一個button。所以當你點擊按鈕時,綁定到該動作的javascript方法被執行,但是你並沒有阻止默認動作,所以表單也被髮送爲x-www-form-urlencoded,而且我只是猜測,你的控制器只准備好處理form-urlencoded請求是當你得到請求方法不支持的錯誤。

您有不同的選項。你可以:

  • 使用button類型爲您的按鈕,而不是submit
  • 使用Event.preventDefault
  • 剛剛返回false你的JavaScript方法

你的JavaScript應該是這樣的:

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

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

    .... 

    //or this. 
    return false; 
}); 
+0

非常感謝..這工作了..但是,你會默認爲GET請求..? – Hema

+0

你的表單標籤和你的ajax調用都沒有爲method屬性定義一個值。在這兩種情況下,默認的都是GET。 https://www.w3.org/TR/html401/interact/forms.html#h-17.3 http://api.jquery.com/jquery.ajax/您需要在ajax調用中使用方法而不是類型。 – alfcope

+0

好吧,我知道了..謝謝你的解釋 – Hema