Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正在延迟将记录添加到数据库中_Php_Jquery_Sql_Cakephp - Fatal编程技术网

Php 正在延迟将记录添加到数据库中

Php 正在延迟将记录添加到数据库中,php,jquery,sql,cakephp,Php,Jquery,Sql,Cakephp,我在开发模式中使用Cakephp,我的数据源是database/Mysql 在我的系统中,我有以下过程: 访客选择6个项目 访客点击按钮 单击按钮后,我使用jquery$.post将数据发送到一个php函数,该函数获取该数据并将其添加到数据库中。 在这之后,他们可能会被重定向到付款页面。 这是负责将数据发送到php函数句柄的jquery脚本 这是php函数句柄 这是php的支付函数 因此,问题是在进入付款页面后,sets变量不包含最近添加的新数据 为了找到问题,我比较了记录的创建时间,我在set

我在开发模式中使用Cakephp,我的数据源是database/Mysql

在我的系统中,我有以下过程:

访客选择6个项目 访客点击按钮 单击按钮后,我使用jquery$.post将数据发送到一个php函数,该函数获取该数据并将其添加到数据库中。 在这之后,他们可能会被重定向到付款页面。 这是负责将数据发送到php函数句柄的jquery脚本

这是php函数句柄

这是php的支付函数

因此,问题是在进入付款页面后,sets变量不包含最近添加的新数据

为了找到问题,我比较了记录的创建时间,我在sets表中创建了一个字段,与加载付款页面的时间进行了比较。请参见注释命令

这些记录似乎是在显示付款页面后30秒左右添加的。 这怎么可能

我的意思是,重定向是在记录被添加到数据库之后进行的。 我以为这是缓存,但我仍然使用默认的文件引擎缓存,它似乎不缓存记录,而只是db方案

我一直在寻找任何相关问题,但结果一无所获, 我调试并尝试了几乎所有的想法,但仍然没有找到问题的根源

谢谢。

包装您的窗口。位置=付款页;成功处理程序中的代码

例如:

发生的情况是,用户在请求发生的同时被重定向到新页面。如果您等待请求完成,那么您应该可以

有关jquery ajax请求的更多信息,请参见:

我确信.完成和.成功基本上是一样的。我会试试看,并告诉你最新情况。谢谢
$('.next-step').on('click', function(){

    var paymentPage = $(this).attr('data-href');

    var slotsData = [];
    var i = 0;
    $('.slot').each(function(){
        slotsData[i] = {
            'img-id': $(this).attr('data-id'),
            'img-src': $(this).attr('data-src'),
            'img-high-src': $(this).attr('data-high-src'),
            'img-page': $(this).attr('data-page')
            };
        i++;    
    }); 

    var setid = 0;

    $.post('/sets/handle', {k:'',setid:setid,setData:slotsData}, function(data){
                window.location = paymentPage;
    });

    return true;
});
public function handle()
{
    $this->autoRender = false;
    $this->request->onlyAllow('ajax');

    $set_id = (int)$this->request->data('setid');
    $images = serialize($this->request->data('setData'));


    //Key
    $cookie_key = $this->Cookie->read('visitor_key');
    if(isset($cookie_key) && $cookie_key != null)
    {
        $key = $cookie_key;
    }
    else
    {
        $key = $this->newKey();
        $this->Cookie->write('visitor_key', $key);
    }


    //Edit Mode
    if(isset($set_id) && $set_id > 0)
    {
        /*Some other irrelevant code */         
    }
    else //Creating a new set
    {
        $this->Set->create();
        $this->Set->save(array(
            'images' => $images,
            'visitor_key' => $key,
            'quantity' => 1
        ));

        AppController::logActivity( array('visitor_key' => $key, 'instagram_id' => 0, 'instagram_username' => ''), 'Created New Set', $this->Set->id );

        return json_encode(array('status' => 'created','setid' => $this->Set->id,'visitor_key'=>$key));
    }


}
public function payment() {

    $this->set('title_for_layout', 'Review Your Order');
    /*
    debug( date("d-m-y H:i:s") );
    */                  
    $sets = $this->Set->findAllByVisitorKeyAndOrderId($this->Cookie->read('visitor_key'),'0');
    /*
    debug($sets);
    */      
    $onesetcost = Configure::read('Ecom.setcost');
    $visitor_key = $this->Cookie->read('visitor_key');

    $total_sets = 0;
    foreach($sets as $set){
        $total_sets += $set['Set']['quantity'];
    }
    $shippmentCost = $this->shippmentCostByQuantity($total_sets);           

    $this->set(compact('sets','onesetcost','visitor_key','shippmentCost'));

}
$.post('/sets/handle', {k:'',setid:setid,setData:slotsData}, function(data){
    // Do nothing in here
}).done(function( msg ) {
    window.location = paymentPage;
});