我在下面的例子中实现自动刷新时间。(只有间隔函数设置为1秒)
http://blog.neattutorials.com/examples/pjax/web/site/auto-refresh
我在我的VIEW上使用这个实现,我使用Inputform,我有麻烦,每次重新加载我从inputform丢失指针。
请问有什么方法,Javascript如何在不使用按钮的情况下从控制器调用函数,或者如何在不丢失指针的情况下重新加载部分页面?
我试过window.location.replace(“site / auto-refresh”);但它刷新了整个网站,而不是PJAX的一部分。
有我的代码:
<?php $form = ActiveForm::begin(['id' => 'my-form']);
echo $form->field($model,'ipadress')->textInput((['id'=>'ipadress'])); $model->text = $text;
echo $form->field($model, 'text')->textArea(['rows' => '6','readonly' => 'true']);
echo Html::submitButton('Submit',['class'=>'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>
<?php Pjax::begin(); ?>
<?= Html::a("Refresh", ['site/auto-refresh'], ['class' => 'btn btn-lg btn-primary', 'id' => 'refreshButton',]) ?>
<h1>Current time: <?= $time ?></h1>
<?php Pjax::end(); ?>
<?php
$script = <<< JS
$(document).ready(function() {
setInterval(function(){ $("#refressetIntervalhButton").click(); }, 1000);
});
JS;
$this->registerJs($script);
?>
更新: 仍然是相同的结果,当时间更新时,我从文本输入丢失指针(当我写作时)。 查看:
<?php $form = ActiveForm::begin(['id' => 'my-form']); ?>
<?php echo $form->field($model,'ipadress')->textInput((['id'=>'ipadress']));
$model->text = $text; ?>
<?= $form->field($model, 'text')->textArea(['rows' => '6','readonly' => 'true']) ?>
<?= Html::submitButton('Submit',['class'=>'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>
<?php Pjax::begin(); ?>
<?= Html::a("Refresh", ['site/auto-refresh'], ['class' => 'btn btn-lg btn-primary', 'id' => 'refreshButton',]) ?>
<h1>Current time: <?= $model->time ?></h1>
<?php Pjax::end(); ?>
控制器:
$model = new \app\models\Tools;
$model->time = date('H:i:s');
$uptime=shell_exec('uptime | awk \'{print $3}\';');
return $this->render('auto-refresh', ['uptime' => $uptime, 'text' => $ip,'model' => $model]
谢谢 MK
答案 0 :(得分:0)
请对两者使用一个控制器操作,并在模型中添加时间作为公共属性。
<强>控制器强>
public function actionTest()
{
$model = new Test();
$model->time = date('H:i:s');
return $this->render('TestView', ['model' =>$model]);
}
查看强>
<?php Pjax::begin(); ?>
<?= Html::a("Refresh", ['site/test'], ['class' => 'btn btn-lg btn-primary', 'id' => 'refreshButton',]) ?>
<h1>Current time: <?= $model->time ?></h1>
<?php Pjax::end(); ?>
或者您不希望时间作为您的控制器返回的公共财产,如下所示
return $this->render('TestView', ['model' => $model,'time'=>date('H:i:s')]);
直接在视图中使用时间变量。