Moment.js对Ajax请求的未定义对象引用

Skrunic

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

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

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

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

nextWeek : function () {
    switch (this.day()) {
        case 0:
            return '[u] [nedjelju] [u] LT';
        case 3:
            return '[u] [srijedu] [u] LT';
        case 6:
            return '[u] [subotu] [u] LT';
        case 1:
        case 2:
        case 4:
        case 5:
            return '[u] dddd [u] LT';
    }
},

没有发送电子邮件,但从日历中获取日期。

这是我的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 = '[email protected]';
    $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没有对象可以引用,或者我做错了什么,或者是否需要解决此已知问题(Google并没有提供给我任何东西)。这是jsfiddle,但是没有ajax调用,因为我以前从未使用过fiddle,现在还不知道如何设置它。我可能稍后再回来弄清楚并添加它。

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

文森佐

Eonasdan的bootstrap-datetimepickerdate方法返回一个moment对象,因此您试图将jQuery无法序列化的对象发送到服务器(请参阅参考资料)。您必须更改发送到服务器的类型,您可以:jQuery.ajax data

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章