[英]JQuery/AJAX call is not hitting Spring MVC controller
我試圖在創建更改密碼頁面時驗證用戶名和其他字段。問題是Jquery腳本中的AJAX調用未命中我的控制器。我試圖在ajax請求的url字段中也給出硬編碼的路徑。 以下是我的腳本
此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;
}
不應在控制器中使用RequestParam,而應使用String。 因為當我們發布JSON數據時,它不會作為Request中的單個參數出現,而是在您的控制器中作為String接收。 獲得String后,將其轉換為JSON對象,然后相應地獲取您的值。
嘗試刪除內容類型和數據類型。 您不是在發送應該在對象中解析的json,而是在發送控制器的參數。 做到這一點的方法是在Ajax的數據中使用一個對象(如您所做的那樣),但是沒有內容類型或數據類型說“我正在發送一個json參數”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.