Codeigniter控制器变量在更改后丢失

时间:2014-01-08 14:13:49

标签: javascript php jquery codeigniter progress-bar

我有一个简单的jquery进度条,它应该从Codeigniter控制器获取一个变量并将其打印在屏幕上。 问题是当函数更改该变量时,结果会丢失,因此进度条显示为0。

这是我的代码:

class Emails extends CI_Controller {

public $p;
...

public function test()
{
    for ($i=0; $i < 1000000; $i++)
    { 
        $this->setprogress($i);
    }
}
public function setprogress($value)
    {
        $this->p = intval($value); 
}

public function progress()
{
    print $this->p;
}

在jquery中

function getProgress(){
    $.get('<?=site_url("/emails/progress"); ?>', function(data) {
        percent = (parseInt(data));
    });
}

$(document).ready(function(){
    $.get('<?=site_url("/emails/test"); ?>', function(parsing) {});
    interval = setInterval(getProgress, 100);
});

进度变量总是返回空(NaN)。 有什么建议? 非常感谢你们。

2 个答案:

答案 0 :(得分:1)

这是正确的解决方案。感谢Jorge Faianca的大提示

public function __construct()
{
    parent::__construct();
    $this->load->library('session');
}

public function test()
{
    for ($i=0; $i < 100; $i++) { 
        $this->setprogress($i);
    }
}

function setprogress($value)
{
    $this->session->set_userdata('progress', intval($value)); 
}

public function progress()
{
    print $this->session->userdata('progress'); 
}

答案 1 :(得分:0)

正如我在评论中解释的那样,你可以这样做。 (使用Code Igniter中的会话库而不是本机会话库)

public function test()
{
    for ($i=0; $i < 1000000; $i++)
    { 
        $this->setprogress($i);
    }
}
public function setprogress($value)
{
     $_SESSION['progress'] = intval($value); 
}

public function progress()
{
    echo $_SESSION['progress'];
}

public function test() { for ($i=0; $i < 1000000; $i++) { $this->setprogress($i); } } public function setprogress($value) { $_SESSION['progress'] = intval($value); } public function progress() { echo $_SESSION['progress']; }