在其他对数据库的调用中使用返回的ajax ID

时间:2018-07-24 16:06:09

标签: php jquery mysql json ajax

我有一个ajax调用,该调用成功调用了一个php文件,该文件将插入数据并返回该插入的ID,但是我在弄清楚如何将其保存在我的主template.php文件(其中的ajax代码为),并将其保留在那里,以便在需要ID的其他调用中进行mysql插入/更新。

templates.php

approval.rb

class Approval < ApplicationRecord

  belongs_to :job_application

  validates_acceptance_of :operator_approval, :allow_nil => false,

end

addPage.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>

因此,当我这样做时,控制台日志将显示:$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; }

如何保存此ID以在页面中的其他呼叫中使用?例如,我有另一个ajax调用:

"{\"last_insert_id\":67}"

它调用:

addPanel.php

var string = $('#form-data').serialize();

      $.ajax({
          type: "POST",
          url: "addPanel.php",
          data: string,
          cache: false,
          success: function(response){
            console.log(JSON.stringify(response));

          }
      });

但是我想更改插入语句,以使用先前返回的“ last_insert_id”作为$ page_id,如下所示:

$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;
}

1 个答案:

答案 0 :(得分:1)

将其存储为隐藏输入,并发送到下一个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,则此方法应该没问题。