Javascript Momente.js未定义的ajax请求对象引用
我正在尝试使用Eonasdan的bootstrap datetimepicker制作一个简单的预订日历,它是基于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文件:
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()}
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/`