2013-03-14 60 views
2

我在Portlet中使用Kendo UI DatePicker。这是我的jQuery Ajax代码:jQuery Ajax不发布任何数据

kendoWindow.find(".btnConfirm,.btnCancel").click(function(e) 
     { 
      if (jQuery(this).hasClass("btnConfirm")) 
      { 
       var strStartDate; 
       var strEndDate; 

       jQuery.ajax(
       { 
        url : window.urlGenerateWorkbook, 
        data : 
        { 
         strStartDate : jQuery("#startDate").data("kendoDatePicker").value(), 
         strEndDate : jQuery("#endDate").data("kendoDatePicker").value() 
        }, 
        dataType : "json", 
        cache : false, 
        async : true, 
        type : "POST", 
        timeout : 0, 
        success : function(jsonResponse) 
        { 
         if (jsonResponse.hasOwnProperty('ERROR')) 
         { 
          alertError(jsonResponse['ERROR']); 
         } 
         else 
         { 
          jQuery('.pnlJournalEntry #tdEntries > div').empty(); 
          setJournalEntries(strPortletID); 
         } 
        }, 
        error : function(jsonResponse) 
        { 

         alertError("There was no response from the server."); 

        } 
       }); 
      } 

      kendoWindow.data("kendoWindow").close(); 
     }).end(); 

我使用的是剑道的窗口中打开portlet,它会要求一个日期范围内的另一个窗口。然后它将这些日期通过ajax发送出去。当我警告strStartDate和strEndDate时,我会得到值。但在Java方面,我得到了NullPointerException。当我在Firebug中检查POST方法时,我没有发布任何内容。

有人能帮我解决这个问题吗?谢谢。

编辑:我想我找到了问题。 Ajax中的所有内容都需要以字符串形式发送。 Kendo UI DatePicker,当我将strStartDate和strEndDate设置为value()时,它返回一个Date。因为Ajax不能发送日期,我不得不这样做:

data : 
{ 
    strStartDate : jQuery('#startDate').data("kendoDatePicker").value().toString(), 
    strEndDate : jQuery('#endDate').data("kendoDatePicker").value().toString() 
}, 

这是现在就派下面的Java视图控制器:

周五2013年3月1日00:00:00 GMT-0500(东标准时间) 2013年3月12日00:00:00 GMT-0400(东部夏令时间)

我仍然收到NullPointerException,但我认为它现在在Java端,所以我至少获取一些数据现在。感谢您的建议家伙。

回答

0

你上面的Ajax调用,试试这个:

var payload = { 
    strStartDate : jQuery("#startDate").data("kendoDatePicker").value(), 
    strEndDate : jQuery("#endDate").data("kendoDatePicker").value() 
}; 

,然后你的Ajax声明应改为有这样的:

data: JSON.stringify(payload), 
+0

这当我在Firebug中查看它时,实际上是张贴了一些内容,但我仍然得到一个空指针异常。 – snowfi6916 2013-03-14 18:00:42

0

尝试增加的contentType

contentType: "application/json; charset=utf-8", 
+0

仍然返回一个NullPointerException。 – snowfi6916 2013-03-14 18:00:09

+0

尝试使用'“strStartDate”:jQuery(“#startDate”)。data(“kendoDatePicker”)value(), “strEndDate”:jQuery(“#endDate”)。data(“kendoDatePicker”)。value() ' – 2013-03-14 18:04:29