2

我在 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() 时,它返回了一个日期。由于 Ajax 不能发送日期,我不得不这样做:

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

现在将以下内容发送到 Java ViewController:

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

我仍然得到 NullPointerException,但我认为它现在在 Java 端,所以我现在至少得到了一些数据。谢谢你们的建议。

4

2 回答 2

0

在你的ajax调用之上,试试这个:

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

然后您的 ajax 声明应更改为:

data: JSON.stringify(payload),
于 2013-03-14T17:53:21.210 回答
0

尝试添加contentType

contentType: "application/json; charset=utf-8",
于 2013-03-14T17:54:38.853 回答