我想在創建更改密碼頁時驗證用戶名和其他字段。問題是AJAX調用JQuery腳本沒有擊中我的controller.i嘗試給硬編碼路徑也在ajax請求的url字段中。 以下是我的腳本JQuery/AJAX調用沒有擊中Spring MVC控制器
此checkUname函數正在onblur事件上從一個輸入字段觸發。
<script type="text/javascript">
function checkUname()
{
// get the form values
var uName = $('#username').val();
var secQues = $('#secQues').val();
var secAns = $('#secAns').val();
var dataObject = JSON.stringify({
'uName' : uName,
'secQues': secQues,
'secAns' : secAns
});
$.ajax({
url:"validateCredentials.do" ,
type: "POST" ,
data: dataObject ,
contentType: "application/json; charset=utf-8" ,
dataType : 'json' ,
success: function(response)
{
alert(response);
} ,
error: function()
{
alert('Error fetching record.... Sorry..');
}
});
}
</script>
這是我的MVC控制器
@Controller
public class ArsController
{
@RequestMapping(value="validateCredentials.do", method = RequestMethod.POST)
public String changePass(@RequestParam("uName") String uName ,@RequestParam("secQues")String secQues,
@RequestParam("secAns") String secAns)
{
System.out.println("AJAX request");
Users dummyUSer = null;
String msg = null;
try
{
dummyUSer = servObj.findUser(uName);
}
catch (ArsException e)
{
System.out.println("error occurred while validating user data during password change");
e.printStackTrace();
}
if(dummyUSer == null)
{
msg = "No user exists with this username";
}
else
{
if(!secQues.equals(dummyUSer.getSecQues()))
{
msg = "Security question is not correct";
}
else
{
if(!secAns.equals(dummyUSer.getSecAns()))
{
msg = "Security answer does not match";
}
}
}
return msg;
}
我沒有有關Java代碼的想法,但AJAX請求具有'type:「POST」'而它應該是'method:「POST」' –
我按照您的建議進行了更改,但現在它們獲取「INFO:Error解析HTTP請求標頭 注意:進一步發生HTTP頭解析錯誤將在DEBUG級別記錄。 java.lang.IllegalArgumentException:在請求目標中找到無效字符「 – Sourabh
也許你可以使用這個[解決方案](https://stackoverflow.com/questions/18819180/ tomcat-7-0-43-info-error-parsing-http-request-header),但我不確定它是否會有幫助,因爲我對Java不太瞭解。此外,您的AJAX請求現在工作正常,您必須從後端/服務器調試問題。 –