我在portlet中使用了Kendo UI DatePicker。这是我的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();
我正在使用Kendo Window在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 ViewController:
Fri Mar 01 2013 00:00:00 GMT-0500(东部标准时间) 2013年3月12日星期二00:00:00 GMT-0400(东部夏令时间)
我仍然得到NullPointerException,但我认为它现在在Java端,所以我现在至少得到一些数据。谢谢你的建议。
答案 0 :(得分:0)
,试试这个:
var payload = {
strStartDate : jQuery("#startDate").data("kendoDatePicker").value(),
strEndDate : jQuery("#endDate").data("kendoDatePicker").value()
};
然后你的ajax声明应该更改为:
data: JSON.stringify(payload),
答案 1 :(得分:0)
尝试添加 contentType
contentType: "application/json; charset=utf-8",