javascript - 如何在脚本计数后立即使用 AJAX 查看数据库中的数据?
问题描述
逻辑是这样的:
用户点击左列(包含整数);
JS 脚本捕获它的值并通过使用 AJAX 将它们添加到数据库中;
PHP 脚本获取该值,进行一些计算,将它们添加到数据库中并在右列(日期
<td>
)中显示结果。
现在正如预期的那样,PHP 脚本需要刷新页面以显示计算结果(日期在 中<td>
)。我正在尝试编写 JS 脚本,该脚本将从数据库中检索计算数据并立即显示在 HTML 表格的单元格中。有麻烦。就这个问题寻求帮助。
索引.php:
<form id="form-wrap" action="functions.php" method="POST">
<select name="select1" required>
<?php
for ($i = 1; $i <= 20; $i++) {
echo "<option>".$i."</option>";
}
?>
</select>
<br>
<input type="text" id="name" name="name">
<input type="date" id="day" name="day">
<input type="submit" name="button_ok" id="button_ok" value="Write">
<input type="submit" name="show" id="show" value="Show table">
</form>
函数.php:
<?php
require_once 'dbconnect.php';
$loged = $_POST["name"];
$day = $_POST["day"];
class Count_Add_Class {
public function CountDays() {
global $day, $loged, $day_remind1, $days_before1;
$currenttime = time();
$days_before1 = $_POST["select1"];
// ... make some calculations with user's input ...
$this->AddDate();
}
public function AddDate() {
global $pdo, $loged, $day, $day_remind1, $days_before1;
if (isset($_POST['button_ok'])) {
// ... insert in database user's inpt and calculation result ...
}
}
}
$obj = new Count_Add_Class();
$obj -> CountDays();
function Count_days_new_data() {
global $pdo, $day, $loged, $day_remind1_updated,
$stmt = $pdo->prepare("SELECT select1 FROM tablex WHERE name=?");
$stmt->execute([$loged]);
$res = $stmt->fetchAll();
foreach ($res as $row) {
$day_remind1_updated = $row['select1'];
}
$day_remind1_updated = $day - ($days_before1_updated * 86400);
$day_remind1_updated = date('Y-m-d', $day_remind1_updated);
}
Count_days_new_data();
function Show() {
global $pdo, $loged, $faq, $day_remind1_updated;
$stmt = $pdo->prepare("SELECT * FROM tablex WHERE name=?");
$stmt->execute([$loged]);
$faq = $stmt->fetchAll();
$s1 = $_POST['editval'];
$id = $_POST['id'];
$stmt2 = $pdo->prepare("UPDATE tablex SET select1=? WHERE
id=?");
$stmt2->execute([$s1, $id]);
$stmt3 = $pdo -> prepare("UPDATE tablex SET day_remind1=?,WHERE
id=?");
$stmt3->execute([$day_remind1_updated, $id]);
require_once 'table.php';
}
Show();
?>
表.php:
<div id="day-data">
<tbody>
<?php
foreach($faq as $key=>$value) {
?>
<tr class="table_row">
<td><?php echo $value['name']; ?></td>
<td aria-label="First" contenteditable="true" onBlur="saveToDatabase(this,'select1','<?php echo $faq[$key]["id"];
?>')" onClick="showEdit(this);"><?php echo $faq[$key]["select1"]; ?>
</td>
<td><?php echo $value['day_remind1']; ?></td>
</tr>
<?php
}
?>
编辑.js:
function showEdit(editableObj) {
$(editableObj).css("background","#FFF");
}
function saveToDatabase(editableObj,column,id) {
$(editableObj).css("background","#FFF url(loaderIcon.gif) no-repeat
right");
$.ajax({
url: "functions.php",
type: "POST",
data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id,
success: function(data){
$(editableObj).css("background","#FDFDFD");
}
});
}
show.js:(受此答案启发)
$(".tbl tbody").on("click", "tr", function() {
var id = $(this).find("td")[0].text(); // gets the first td of the
clicked tr
var value = $(this).find("td")[1].text()
$.ajax({
url : "table.php",
dataType: "text",
success : function (data) {
$(".day-data").html(data);
},
error: function (data) {
(".tbl").html('No such file found on server');
}
});
});
当用户点击 HTML 表格左栏时,它会很好地显示;当他更改它时,数据会很好地添加到数据库中。现在,当页面刷新时,计算新数据,添加到数据库并显示在 HTML 表的右列中。
我想问题出在show.js
. 需要一些帮助来纠正这个脚本!
解决方案
不幸的是,您拥有functions.php
文件中的所有内容。它不仅计算值,还呈现表格。因此,当您调用该函数时saveToDatabase
,您发出的请求functions.php
(我完全理解它)已经返回带有更新数据的表(作为函数的参数success
)。尝试删除 show.js 并从中更改成功函数内容edit.js
:
$(editableObj).css("background","#FDFDFD");
对此
$(editableObj).css("background","#FDFDFD");
$(".day-data").replaceWith(data);
推荐阅读
- python - 从另一个类对象引用一个类对象
- java - Apache derby db 错误“请求的企业集团 (1.744) 不存在”
- javascript - 如何在反应中将数据作为对象数组提交
- angular - Angular - 无线电组的反应式表单验证
- python - 通过单个 docker 文件运行两个单独的 Python-Flask api
- pytorch - 如何创建给定形状和间隔的张量?
- angular - “使用无效数据调用函数 DocumentReference.set()。不支持的字段值:自定义对象”将数据添加到文档时出错?
- spring-boot - 在spring boot jpa查询中求和一个平均值列表
- python - 在 Firebase 中保存 JSON 数据
- java - ActiveMQ 版本 5.16.0 有易受攻击的依赖 jar