php - Ajax调用面临尴尬局面

标签 php mysql ajax

请允许我回答很长的问题...

我必须将一条数据库记录添加到一张主表中,比方说 test 表。将记录添加到该表后,我想要它的 last inserted id 然后想将大约 1000 个条目添加到事务表中(也将 EMAILS 发送到这 1000 个记录)假设 test_transaction 表.

但是这第二个操作,将记录添加到事务表中,需要更多的时间将记录添加到数据库中。我正在使用客户 MVC,我的代码看起来像...

public function addtotest()
{
    $strSql = "INSERT INTO test ...";
    $intId = $this->db->execute($strSql);

    foreach($arrTransaction $transact)
    {
        $strSql = "INSERT INTO test_transaction ...";
        $this->db->execute($strSql);
    }

    echo $intId;
}

所以我想将 test_transaction 表的条目放入另一个 action 中,如下所示

public function testtrancation()
{
    $id = $_REQUEST['id']; //It's understood that I am doing proper validation here
    foreach($arrTransaction $transact)
    {
        $strSql = "INSERT INTO test_transaction ...";
        $this->db->execute($strSql);
    }
}

所以主要问题是,我正在从 AJAX 调用 addtotest 操作,它何时会给出 id 作为响应我想调用另一个 AJAX 将向数据库添加大约 1000 条记录。

但我不想让用户再等待几分钟以获取 1000 记录,从而打扰用户的体验。

  1. 所以我在通过 addtotest `AJAX' 调用添加记录后重新加载页面。
  2. addtotestsuccess 中调用另一个 AJAX 调用。
  3. 在调用 testtransaction AJAX 调用后,我正在重新加载我的页面。

    $.ajax(
    {
        url: SERVER_PATH + 'addtotest',
        type: 'post',
        async: true,
        data: { required_data: required_date },
        success:function(data)
        {
            alert('Record added successfully.');
    
            //I DO NOT WANT USERS TO WAIT FOR THIS AJAX CALL
            $.ajax(
            {
                url: SERVER_PATH + 'testtransaction',
                type: 'post',
                async: true,
                data: { intId: data.id },
                success:function(data)
                {
                //DO NOTHING
            },
            });
            //I DO NOT WANT USERS TO WAIT FOR THIS AJAX CALL
    
            location.reload();
        },
    });    
    

但是随着页面重新加载,我的 AJAX 调用也没有完成 AJAX 请求就消失了。

那么在这种情况下可以这样做吗?如果您想了解更多详情,请告诉我。

我不希望用户等待另一个 1000 条目(加上向这 1000 条记录发送电子邮件)进入数据库。

最佳答案

然后创建一个数据库触发器。 所以当记录被插入到第一个表中时 它插入事务表或 SO。

示例 -

    CREATE TRIGGER trg_Table1_INSERT
 ON dbo.Table1 AFTER INSERT 
AS BEGIN
   INSERT INTO dbo.Table2(SerialNo, Name)
  SELECT SerialNo, Name
  FROM Inserted

   INSERT INTO dbo.Table3(SomeOtherCol)
  SELECT SomeOtherCol
  FROM Inserted
END

关于php - Ajax调用面临尴尬局面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441617/

相关文章:

php - DELETE FROM NOT IN 不使用 PHP 数组

php - Symfony2 中的策略模式

php - 如何在php中的每个页面上获取用户名

mysql - 使用 Laravel 4 和 mySQL 根据父记录检索所有子记录

php - 如何在其他元素上显示自动建议的 div 框

javascript - Rxjs/reactor limit operator 等效于 ajax 请求

php - 漂亮链接中的撇号和冒号

python - 如何在 MySQL 上使用 Django 模拟 "lock timeout"错误

java - mysql删除重复数据的方法

javascript - 为什么 $(window).on ('beforeunload' ,回调);更新到 73.0.3683.103 后不再在 Chrome 中触发我的 ajax 调用?