从JavaScript函数获取NaN尝试多次获取相同数据

从JavaScript函数获取NaN尝试多次获取相同数据,javascript,datetime,jtable,Javascript,Datetime,Jtable,我想在这里解析两个日期。但是如果我尝试两次获得该值,last\u payment\u date会给我NaN 当我多次尝试编辑我的JTable列表时,为什么它会给我NaN 上次付款日期的类型为数组。您需要首先为其编制索引: updateAction: function(postData) { console.log("updating from custom function..."); return $.Deferred(function($dfd) { $.aj

我想在这里解析两个日期。但是如果我尝试两次获得该值,
last\u payment\u date
会给我
NaN


当我多次尝试编辑我的
JTable
列表时,为什么它会给我
NaN

上次付款日期
的类型为
数组
。您需要首先为其编制索引:

updateAction: function(postData) {
    console.log("updating from custom function...");
    return $.Deferred(function($dfd) {
        $.ajax({
            url: 'HallManagementServlet?action=UpdateStudent',
            type: 'POST',
            dataType: 'json',
            data: postData,
            success: function(data) {
                $.each(data, function(entryindex, entry) {
                    payment_date.push(entry['payment_expires_on']);  
                });
                var current_date = new Date();
                var current_date_in_millis = current_date.getMilliseconds();

                var last_payment_date = payment_date;
                alert(Date.parse(last_payment_date)+"Second 1"+Date.parse(current_date));
                $dfd.resolve(data);
            },
            error: function() {
                $dfd.reject();
            }
        });
    });
}

罪魁祸首似乎是
payment\u date
date.parse()

Date.parse()
可以处理长度为1的数组

Date.parse(last_payment_date[0])
为什么当我尝试多次编辑我的JTable列表时,它会给我NaN

第一次更新表时,
payment\u date
可能只有一个条目,第二次可能有两个或多个条目

Date.parse(['01-01-2015']) // 1420088400000
试试这个:

Date.parse(['01-01-2015', '03-03-2015']) // NaN

您可以对
payment\u date
数组进行排序,并始终为
last\u payment\u date
使用最大时间戳。大概最后一个付款日期是按时间顺序排列的最后一个,但我不确定这是不是真的。这对我不起作用。但我在success中声明了last_payment_date变量。因此,每次该方法运行时,最后一个付款日期都将用新值更新。@TanziraNajninTonu,我很高兴您现在可以使用它。
var data = ['10-03-2015', '01-01-2015', '03-03-2015'];
$.each(data, function(entryindex, entry) {
    payment_date.push(Date.parse(entry['payment_expires_on']));  
});

// ...

// Presumably the last payment date is chronologically the last one,
// but I am not sure if that is true or not.
payment_date.sort();

var last_payment_date = payment_date[payment_date.length - 1];
// last_payment_date is a now a timestamp, don't use Date.parse() on it.

// ...