首页 > 解决方案 > 在对数据库的其他调用中使用返回的 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');

标签: phpjquerymysqljsonajax

解决方案


将其存储为您发送到下一个 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,这种方法应该没问题。


推荐阅读