Javascript Momente.js未定义的ajax请求对象引用

Javascript Momente.js未定义的ajax请求对象引用,javascript,ajax,momentjs,bootstrap-datetimepicker,Javascript,Ajax,Momentjs,Bootstrap Datetimepicker,我正在尝试使用Eonasdan的bootstrap datetimepicker制作一个简单的预订日历,它是基于moment.js库构建的,我为它包含了本地化文件。我设置了一个基本的链接选择器输入字段和一个按钮,使用简单的ajax请求发送带有日期的电子邮件。但是,在提交表单时,我发现以下错误: //locale-hr.js(第89行第1列) TypeError:这是未定义的开关(this.day()){ 文件摘录(第88-102行): 不发送电子邮件,但从日历中提取日期 这是我的ajax文件:

我正在尝试使用Eonasdan的bootstrap datetimepicker制作一个简单的预订日历,它是基于
moment.js
库构建的,我为它包含了本地化文件。我设置了一个基本的链接选择器输入字段和一个按钮,使用简单的ajax请求发送带有日期的电子邮件。但是,在提交表单时,我发现以下错误:

//locale-hr.js(第89行第1列)

TypeError:这是未定义的开关(this.day()){

文件摘录(第88-102行):

不发送电子邮件,但从日历中提取日期

这是我的ajax文件:

$(function() {
    $("#reservationForm").on("submit", function(e) {
        e.preventDefault();

        var url = "../bin/reservation.php";

        // stores dates from each calendar
        var date1 = $("#datetimepicker1").data("DateTimePicker").date();
        var date2 = $("#datetimepicker2").data("DateTimePicker").date();

        $.ajax({             
            type: "POST",
            url: url,
            data: { date1: date1, date2: date2 },
        }).done(function(response) {
            alert("Msg sent");
        });                     
    });
});
以及PHP文件:

<?php
    if ( empty($_POST['date1']) || empty($_POST['date2']) ) {
        echo ERROR_NO_ARGS;
        return false;
    }

    $date1 = $_POST['date1'];
    $date2 = $_POST['date2'];

    $to = 'my@email.com';
    $email_subject = "Title";
    $email_body = "Selected dates:" . "From $date1 to $date2";
    $headers = "From: Contact form\n";      
    $headers .= "Content-Type: text/plain; charset=utf-8" . "\r\n";

    mail($to, $email_subject, $email_body, $headers);

    return true;            
?>

正如你所看到的,这是非常基本的东西。我想知道我在这里遗漏了什么,这样locale-hr.js就没有对象可供参考,或者我是否做错了什么,或者这是一个需要解决的已知问题(谷歌没有给我任何类似的建议).这里没有ajax调用,因为我以前从未使用过fiddle,现在也不知道如何设置它。我可能稍后会回来找到它并添加它


如果我要扩展问题,请通知我。谢谢。

可能有一些错误:

更新小提琴:

`https://jsfiddle.net/dssoft32/d4zuxy4e/2/`
//模板JS
var fnMain=函数(){
//日历本地化
var hr=moment.locale('hr'{
日期:[“Ponedjeljak”、“Utorak”、“Srijeda”、“Četvrtak”、“Petak”、“Subota”、“Nedjelja”],
工作日短:[“Pon”、“Uto”、“Sri”、“Čet”、“Pet”、“Sub”、“Ned”],
工作日工作名:[“Po”、“Ut”、“Sr”、“Če”、“Pe”、“Su”、“Ne”],
月份:[“Siječanj”、“Veljača”、“Ožujak”、“Travanj”、“Svibanj”、“Lipanj”、“Srpanj”、“Kolovoz”、“Rujan”、“Listopad”、“Studeni”、“Prosinac”],
短月份:[“Sij”、“Velj”、“Ožu”、“Tra”、“Svi”、“Lip”、“Srp”、“Kol”、“Ruj”、“Lis”、“Stu”、“Pro”],
今天:“Danas”,
}
);
var enumeratedaysbetweentDates=函数(开始日期、结束日期){
var日期=[];
while(开始日期)
发送

Eonasdan的bootstrap datetimepicker方法返回一个,因此您试图向服务器发送一个jQuery无法序列化的对象(请参见
data
部分)。您必须更改发送到服务器的类型,您可以:

  • 使用矩传递字符串(如果需要,可以指定格式)。您的代码将是:
    data:{date1:date1.format(),date2:date2.format()}
  • 使用矩传递毫秒。代码:数据:{date1:date1.valueOf(),date2:date2.valueOf()}
  • 使用矩传递秒。代码:数据:{date1:date1.unix(),date2:date2.unix()}

它是否适用于其他语言环境(如英语)?嗯,使用en gb进行了尝试,似乎通过了上述错误,但另一个错误出现了:
TypeError:这是未定义的…ts).parseZone()}函数b(a,b,c){var d=this.calendar[a];返回“function”==typ…
-(矩.min.js line 6 col 20621)既然您提到了,我看到了将hr.js标记为源代码的fiddle中的相关错误。
SyntaxError:expected expression,获得了“非常有用的信息。我认为从日历中获取日期的函数已经将其返回为矩对象,所以我没有考虑再次格式化它。我将此标记为已接受的答案。谢谢Vinc恩佐克。
`https://jsfiddle.net/dssoft32/d4zuxy4e/2/`