ajax表单提交但调用错误函数

时间:2014-11-06 12:33:53

标签: javascript spring spring-mvc

这是一个简单的表单,其中包含两个日期,并且我将这些日期提交给服务器。

<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的成功功能永远不会执行。

背后的原因是什么?

jsfiddle

2 个答案:

答案 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。)

jQuery ajax query