【发布时间】:2014-01-08 14:13:48
【问题描述】:
我有一个简单的 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)。 有什么建议么? 非常感谢各位。
【问题讨论】:
-
使用这段代码我真的看不出问题出在哪里,你只是在打印 $this->p,但你没有设置它,你得到/emails/progress,但我没有'看不到你在哪里设置变量 $this->p;只需执行 $this->p = 1;在打印 $this->p; 之前只是为了调试它
-
在 DOMReady 上,我通过 ajax 调用函数 test(),它根据其中的 for 循环设置 $this->p。
-
每次你做一个ajax调用它都会初始化你的“控制器”; 2 次 ajax 调用 = 2 次请求,将数据保存到 CI 缓存、会话、数据库、文件 w/e 或更改您的设计!
-
好的,这是有用的信息。谢谢!你有什么建议我可以在不一遍又一遍地调用测试函数的情况下改变它吗?
-
我没有足够的代码信息,但我真的不认为你有更好的选择。
标签: javascript php jquery codeigniter progress-bar