加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Ajax调用面临一个尴尬的局面

发布时间:2020-12-13 18:09:30 所属栏目:PHP教程 来源:网络整理
导读:请问我长期问题…… 我必须将一个数据库记录添加到一个主表中,比如测试表.在向此表添加记录后,我想要它的最后一个插入ID,然后想要在事务表中添加大约1000个条目(也将EMAILS发送到这1000条记录),让我们说test_transaction表. 但是这第二个操作,将记录添加到事
请问我长期问题……

我必须将一个数据库记录添加到一个主表中,比如测试表.在向此表添加记录后,我想要它的最后一个插入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表的条目放到另一个动作中,如下所示

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条记录来打扰用户的体验.

>所以我正在通过addtotest`AJAX’调用添加记录后重新加载页面.
>在addtotest中成功调用另一个AJAX调用.
>在调用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',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个条目(加上发送EMAILS到这1000条记录)进入数据库.

然后只需创建一个数据库触发器.
所以当Record在第一个表中插入时
它插入到事务表或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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读