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

前端之家收集整理的这篇文章主要介绍了php – Ajax调用面临一个尴尬的局面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请问我长期问题……

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

猜你在找的PHP相关文章