在 html 响应中使用 Carbon frm ajax
Using Carbon in html response frm ajax
在下面的代码中,我想显示几个小时前的更新,因为数据已更新,但是 ' + $item.updated_at->diffInHours(now()) + '
给出以下错误 Uncaught SyntaxError: expected expression, got '>' 它指向 -> operator
欢迎任何建议,谢谢
index.blade.php
<script>
...
function fetchAllNames() {
var _url = '{{ route("names.fetch.route") }}';
$.ajax({
type: "GET",
url: _url,
dataType: "json",
success: function(response) {
$('tbody').html("");
$.each(response.name, function($key, $item) {
$('tbody').append('<tr>\
<td><input type="checkbox" id="sub_master" data-id="' + $item.id + '"></td>\
<td>' + $key + '</td>\
<td>' + $item.name + '</td>\
<td><label id="timeLabel">' + $item.updated_at->diffInHours(now()) + '</label></td>\
\</tr>');
});
}
});
}
...
</script>
CustomController.php
public function FetchName()
{
$name = CandidateName::all();
return response()->json(['name'=>$name]);
}
您不能在对 ajax、 的回复中使用 PHP
您有两种选择是否在 PHP 中处理它
在 return response 或 use 之前可以通过 js 处理它,
也请检查这个 moment.js Library 它的 Javascript 像 Carbon
库
这样操作日期的库
应该是这样的
在渲染你 html
var now = moment(new Date()); //todays date
var end = moment($item.updated_at); // another date
$('tbody').append('<tr>\
<td><input type="checkbox" id="sub_master" data-id="' + $item.id + '"></td>\
<td>' + $key + '</td>\
<td>' + $item.name + '</td>\
<td><label id="timeLabel">' + moment.duration(now.diff(end)) + '</label></td>\
\</tr>');
假设 $item.updated_at 是一个带有日期时间的字符串,例如“2022-04-01 12:12:00”。
你可以定义一个javascript函数
function diffInHoursToNow(dateStr){
var inputDate = new Date(Date.parse(dateStr));
var diff = new Date().getTime() - inputDate.getTime();
//depending on what you want you can round this off with
//Math.floor(diff/3600)/1000 or similar
return diff/3600000;
}
然后在生成 table 行时,您可以调用
<td><label id="timeLabel">' + diffInHoursToNow($item.updated_at) + '</label></td></tr>'
虽然它是有效的并且有时会有用,但您可能不想使用 $ 来启动您的 javascript 变量名称($key 和 $item)。这将有助于消除调用 php 函数的诱惑。
在下面的代码中,我想显示几个小时前的更新,因为数据已更新,但是 ' + $item.updated_at->diffInHours(now()) + '
给出以下错误 Uncaught SyntaxError: expected expression, got '>' 它指向 -> operator
欢迎任何建议,谢谢
index.blade.php
<script>
...
function fetchAllNames() {
var _url = '{{ route("names.fetch.route") }}';
$.ajax({
type: "GET",
url: _url,
dataType: "json",
success: function(response) {
$('tbody').html("");
$.each(response.name, function($key, $item) {
$('tbody').append('<tr>\
<td><input type="checkbox" id="sub_master" data-id="' + $item.id + '"></td>\
<td>' + $key + '</td>\
<td>' + $item.name + '</td>\
<td><label id="timeLabel">' + $item.updated_at->diffInHours(now()) + '</label></td>\
\</tr>');
});
}
});
}
...
</script>
CustomController.php
public function FetchName()
{
$name = CandidateName::all();
return response()->json(['name'=>$name]);
}
您不能在对 ajax、 的回复中使用 PHP
您有两种选择是否在 PHP 中处理它
在 return response 或 use 之前可以通过 js 处理它,
也请检查这个 moment.js Library 它的 Javascript 像 Carbon
库
应该是这样的 在渲染你 html
var now = moment(new Date()); //todays date
var end = moment($item.updated_at); // another date
$('tbody').append('<tr>\
<td><input type="checkbox" id="sub_master" data-id="' + $item.id + '"></td>\
<td>' + $key + '</td>\
<td>' + $item.name + '</td>\
<td><label id="timeLabel">' + moment.duration(now.diff(end)) + '</label></td>\
\</tr>');
假设 $item.updated_at 是一个带有日期时间的字符串,例如“2022-04-01 12:12:00”。 你可以定义一个javascript函数
function diffInHoursToNow(dateStr){
var inputDate = new Date(Date.parse(dateStr));
var diff = new Date().getTime() - inputDate.getTime();
//depending on what you want you can round this off with
//Math.floor(diff/3600)/1000 or similar
return diff/3600000;
}
然后在生成 table 行时,您可以调用
<td><label id="timeLabel">' + diffInHoursToNow($item.updated_at) + '</label></td></tr>'
虽然它是有效的并且有时会有用,但您可能不想使用 $ 来启动您的 javascript 变量名称($key 和 $item)。这将有助于消除调用 php 函数的诱惑。