我正在尝试将一个简单的json字符串传递给我的控制器,但它没有到达那里。我有很多其他字段,比如在我的控制器代码中插入删除等,所有这些都可以正常工作,除了这个Json接收。我尝试了很多,但无法找到。我检查了给定的路径和它的正确。我的控制器代码有什么问题吗?任何帮助都会非常明显
我的jsp代码
var obj=new Object();
obj.sm=startMonth;
obj.sd=startDay;
obj.em=endMonth;
obj.ed=endDay;
var jsonDate= JSON.stringify(obj);
$.ajax({
type: 'POST',
dataType: 'json',
url:"/proj/test/dateVerification",
data:jsonDate,
success: function(jsonDate) {//upto this line from my browser debugger it works
if (response == jsonDate)
{
alert("success and json passed");
} else {
alert("not success"+response);
}
},
error:function(xhr, errorType, exception) {
alert("inside error function 1(xhr)"+JSON.stringify(xhr));
alert("inside error function 2(errorType)"+errorType);
alert("inside error function 3(exception)"+exception);
}
});
这是我的spring mvc控制器代码。
@RequestMapping(value = "dateVerification" , method = RequestMethod.POST)
public @ResponseBody String dateVerification(@RequestParam(value="jsonDate",required=true) String jsonDate) {
JOptionPane.showMessageDialog(null, jsonDate);
System.out.println("JSON Success"+jsonDate);
return jsonDate;
}
我无法在我的控制器中打印此Joption和sysout。我的控制器代码有什么问题吗?
任何帮助都会非常明显。
答案 0 :(得分:0)
这真是一个javascript问题。在success
回调函数中,您正在接收名为jsonDate
的参数,但该参数是在ajax代码上方定义的变量。 response
在函数范围内未定义,并且可能是您在调试器中看到的错误。只需更改回调函数的签名即可。
success: function(response) { // now response is defined in the scope of the function
if (response == jsonDate)
{
alert("success and json passed");
} else {
alert("not success"+response);
}
},