这是一个简单的表单,其中包含两个日期,并且我将这些日期提交给服务器。
<form action="#" method="get">
<label for="from">From</label>
<input type="text" id="from" name="fromDate">
<label for="to">to</label>
<input type="text" id="to" name="toDate">
<input type="button" value="Recv Amount" id="recv">
</form>
以下是控制器代码
@RequestMapping("getPayments")
@ResponseBody
public void getPayments(HttpServletRequest request,Model uiModel)
{
String toDate=request.getParameter("toDate");
String fromDate=request.getParameter("fromDate");
System.out.println(fromDate+" "+ toDate);
}
这是js代码
$('#recv').click(function(){
var fromDate=$('#from').val();
var toDate=$('#to').val();
$.ajax({
type: "GET",
url: url,
data:{"fromDate":fromDate,"toDate":toDate},
dataType:"json",
success: function( data ) {
console.log('success');
},
error:function()
{
console.log('failed');
}
});
});
当我点击按钮时,我可以在服务器控制台中看到todate和日期(这意味着System.out.println(fromDate +“”+ toDate);已执行)但是在浏览器控制台中打印失败(这意味着console.log('failed');已执行)
我在浏览器控制台中没有任何错误,但ajax的成功功能永远不会执行。
背后的原因是什么?
答案 0 :(得分:1)
编辑:
根据所提供的信息,问题是数据是您形成成功参数的方式。 由于没有返回数据(void方法),它实际上不会做任何事情。
因此您需要使用:
statusCode: { 200: function() { alert( "success" ); } }
删除成功和错误,因为成功将不起作用(不返回任何数据)并显示错误(仅因为没有返回数据)并将其替换为相关的状态代码。
答案 1 :(得分:1)
您正在等待JSON答案,但您没有返回任何内容。 jQuery会给你一个错误。删除&#39; dataType&#39;来自您的ajax请求或返回有效的json对象。
来自jQuery文档:
&#34; json&#34;:将响应评估为JSON并返回JavaScript对象。 JSON数据以严格的方式解析;任何格式错误的JSON都会被拒绝,并抛出一个解析错误。从jQuery 1.9开始,空响应也被拒绝;服务器应该返回null或{}的响应。 (有关正确的JSON格式的更多信息,请参阅json.org。)