我有一个简单的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)。 有什么建议? 非常感谢你们。
答案 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'];
}