我在 ajax 方面不太有经验,并且在从 MySQL 数据库格式化我的日期时遇到问题。
我尝试过使用 php date() 函数,但似乎无法使其正常工作。格式化日期的最佳方式是什么?
$(document).ready(function(){
$.ajax({
type: "GET",
url: "../api/presentation/read.php",
dataType: 'json',
success: function(data) {
var response="";
for(var user in data){
response += "<tr>"+
"<td>"+data[user].date+"</td>"+
"<td>"+data[user].title+"</td>"+
"<td>"+data[user].speaker+"</td>"+
"<td><a href='update.php?id="+data[user].id+"'>Edit</a> | <a href='#' onClick=Remove('"+data[user].id+"')>Remove</a> | <a href='#' onClick=Active('"+data[user].id+"')>Active</a></td>"+
"</tr>";
}
$(response).appendTo($("#presentations"));
}
});
});
我尝试过类似的事情
"<td><?php echo date("+data[user].date+",dd-mm); ?></td>"+
这给出了“+01am31am[00000000UTCThu, 01 Jan 1970 00:00:00 +0000].01am31UTC+”的输出,我怀疑这是因为没有为日期函数赋予任何值?
我希望输出采用 dd-mm HH-MM 格式,而不是 MySQL 日期时间格式“2019-10-29 10:00:00”
最佳答案
您以错误的方式混合 PHP 和 JavaScript。
首先,您必须知道,在浏览器上存在任何 HTML 或 JavaScript 之前,PHP 是在服务器端执行的。
也就是说,让我们再次阅读您的尝试:
“”
这里,脚本的 PHP 部分将在服务器端运行,并且 data[...] 变量不存在,而且它位于字符串内(在双引号之间)。由于该字符串不是有效日期,因此它将输出 start of unix epoch .
要解决这个问题,您需要在这里分离您的关注点。
第一种方式
- 由 ajax 调用的 php 脚本应以某种有效的日期格式返回日期。我建议使用 ISO8601 格式,因为 JavaScript 在使用 Date 对象时会自动解析此格式。
- 使用 JavaScript 将日期格式化为所需的输出格式。
第二种方式:
- 使用日期函数直接在 PHP 上转换日期,但是:您完全在 PHP 脚本上完成此操作。不要混合使用两种语言。它们是完全分离的,运行在不同的时刻,并且具有隔离的范围。
关于javascript - 在 MySQL 中用 javascript 格式化日期时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58581935/