2013-03-14 105 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