2

ポートレットで 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 を使用して、日付範囲を要求するポートレット内の別のウィンドウを開きます。次に、それらの日付を取得し、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 (Eastern Standard Time) Tue Mar 12 2013 00:00:00 GMT-0400 (Eastern Daylight Time)

私はまだ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 に答える