php - 在对数据库的其他调用中使用返回的 ajax ID
问题描述
我有一个 ajax 调用,它成功调用了一个插入数据并返回该插入的 ID 的 php 文件,但我无法弄清楚如何将它保存在我的主 templates.php 文件(ajax 代码所在的位置)并保持它可以在需要 ID 的其他调用中用于 mysql 插入/更新。
模板.php
<script type="text/javascript">
$(document).ready(function(){
$("#submitForm").click(function(){
event.preventDefault();
var string = $('#pageForm').serialize();
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "addPage.php",
data: string,
cache: false,
success: function(response){
console.log(JSON.stringify(response));
$('#my_modal').modal('hide');
$('.modal-backdrop').remove();
}
});
});
});
</script>
添加页面.php
$addpage = "
INSERT INTO pages (title, page_type_id, display_id, duration)
VALUES ('$title','$page_type','$display_id','$duration');
";
if ($mysqlConn->query($addpage) === TRUE) {
$last_id = $mysqlConn->insert_id;
$data['last_insert_id'] = $last_id;
echo json_encode($data);
} else {
echo "Error: " . $addpage . "<br>" . $mysqlConn->error;
}
所以当我这样做时,我的控制台日志会打印:"{\"last_insert_id\":67}"
如何保存此 ID 以用于页面中的其他调用?例如,我有另一个 ajax 调用:
var string = $('#form-data').serialize();
$.ajax({
type: "POST",
url: "addPanel.php",
data: string,
cache: false,
success: function(response){
console.log(JSON.stringify(response));
}
});
它调用:
添加面板.php
$panelID = $_POST['panel_type'];
$addPanel = "
INSERT panels(panel_type_id, cont_id)
VALUES ('$panelID', '$cont_id');
";
if ($mysqlConn->query($addPanel) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $addPanel . "<br>" . $mysqlConn->error;
}
但我想更改插入语句以使用先前返回的“last_insert_id”作为 $page_id,如下所示:
INSERT panels(panel_type_id, page_id, cont_id)
VALUES ('$panelID','$page_id', '$cont_id');
解决方案
将其存储为您发送到下一个 AJAX 调用的表单中的隐藏输入:
<input type="hidden" id="page_id" name="page_id">
这是代码:
$(document).ready(function() {
$("#submitForm").click(function() {
event.preventDefault();
var string = $('#pageForm').serialize();
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "addPage.php",
data: string,
cache: false,
success: function(response) {
$("#page_id").val(response.last_insert_id);
$('#my_modal').modal('hide');
$('.modal-backdrop').remove();
}
});
});
在addPanel.php
你从$_POST['page_id']
.
请注意,来自客户端的任何内容都是可疑的。如果您不希望用户能够更改它,最好将其保存在 PHP 中的会话变量中,而不是依赖客户端将其发送回来。但是如果客户端真的可以在任何页面上添加一个面板,这只是为了方便他们不必输入页面ID,这种方法应该没问题。
推荐阅读
- php - Nova Relatable Filtering - 如何过滤 company_id 与位置 company_id 匹配的用户
- java - 为什么 toMap 放置不当会导致 RXJava 出现问题?
- javascript - Highcharts:如何在多系列图表中使用数据集设置每列,每个系列的颜色?
- git - 暂存修改的文件
- sass - Gulp SaSS 任务中的 Font Awesome 未定义变量
- java - openjfx 1.8 不包含 javafx.fxml 包
- python - 我在 Python 上的 Selenium 项目中遇到问题
- spf - 如何结合这两个 SPF 记录?
- python - 通过 Python Flask 创建 SQLite 数据库时出现“未找到应用程序”错误
- java - Travis 使用 ant 代替 maven