【发布时间】:2018-06-22 09:33:51
【问题描述】:
我最近发现我的网站在 Internet Explorer 11 和 Microsoft Edge 中出现错误。适用于所有其他浏览器。
当我在 Laravel 中使用 Carbon 创建日期时发生错误。
代码:
$date = new Carbon(request('date'));
request('date') 类似于 "YYYY-mm-dd",在其他浏览器中也能完美运行。
我在这条线上得到的错误是:
DateTime::__construct():在位置 0 (�) 解析时间字符串 (2018-06-13) 失败:意外字符
我尝试了很多其他方法来创建 Carbon 实例,在其他 borsers 中都可以正常工作,但在这些方法中不行。
任何想法,什么会导致问题?
编辑: javascript 发送的数据在本例中是一个字符串“2018-06-13”。我试图分解字符串,然后重新连接,并转换一些其他方式。 它在大多数浏览器中显示 string(10) "2018-06-13", 和 string(19) "2018-06-13" 在 Internet Explorer 中,这真的很奇怪。
编辑2: 用于创建日历天数的脚本(Vue2.js):
weeks: function () {
var dayCount = this.calendar.days(this.displayedYear, this.displayedMonth),
dayIndex = this.calendar.day(this.displayedYear, this.displayedMonth, 0).getDay(),
weekCount = Math.ceil((dayCount + dayIndex) / 7);
var weeks = [];
for (var i = 0; i < weekCount; i++) {
var week = [];
for (var j = 0; j < 7; j++) {
var date = new Date(
this.displayedYear,
this.displayedMonth - 1,
i * 7 + j - dayIndex + 1
);
week.push(
date.getMonth() === this.displayedMonth - 1
? date : null
);
}
weeks[i] = week;
}
return weeks;
展示用刀片:
<tr v-for="week in weeks()">
<td
v-for="day in week"
@click="setSelectionPivot(day)"
:class="classes(day)">
<span>
@{{ (day == null) ? '' : day.getDate() }}
</span>
</td>
</tr>
要处理的函数部分:
this.selection = day;
然后我通过 ajax 将其传递给发生错误的代码。询问是否需要其他任何东西。 我不明白的是它如何在任何其他浏览器中完美运行?
【问题讨论】:
-
如果您声明请求“喜欢”某物,您能否分享成功和失败尝试的真实数据?
-
这看起来像是浏览器将数据发送到服务器而不是 Carbon 的方式的问题。你能告诉我们生成这个请求的表单或javascript吗?
-
我认为问题与 PHP 无关,而与数据发送到服务器的方式有关。似乎您的日期字符串之前有一个不可见的字符,这会导致错误。您必须显示用于发送数据的代码
-
您必须显示用于发送数据的代码
-
代码相当复杂,分为4个文件。您究竟需要哪一部分?创建日期的部分?
标签: php laravel datetime internet-explorer php-carbon