Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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
如何在不刷新页面的情况下更新Kohana视图中的php变量?_Php_Ajax_Kohana - Fatal编程技术网

如何在不刷新页面的情况下更新Kohana视图中的php变量?

如何在不刷新页面的情况下更新Kohana视图中的php变量?,php,ajax,kohana,Php,Ajax,Kohana,我正在使用Kohana PHP框架开发一个web应用程序,我被卡住了。我在控制器中设置了一个PHP变量,以便在视图中使用它。我希望在视图中不断更新此变量,而不刷新页面。我想做的是使用SQL数据库中的数据实时显示图表,其中曲线的数据存储在这个PHP变量中。我该怎么做?是否可以在视图中直接更新此变量(在模型中使用my函数)?您可以使用Javascript向应用程序创建AJAX请求,而无需重新加载页面。发生的情况是,请求被发送到您的控制器/操作,在那里您可以查询您的数据库,并且可以传回您喜欢的任何内容

我正在使用Kohana PHP框架开发一个web应用程序,我被卡住了。我在控制器中设置了一个PHP变量,以便在视图中使用它。我希望在视图中不断更新此变量,而不刷新页面。我想做的是使用SQL数据库中的数据实时显示图表,其中曲线的数据存储在这个PHP变量中。我该怎么做?是否可以在视图中直接更新此变量(在模型中使用my函数)?

您可以使用Javascript向应用程序创建AJAX请求,而无需重新加载页面。发生的情况是,请求被发送到您的控制器/操作,在那里您可以查询您的数据库,并且可以传回您喜欢的任何内容。AJAX请求可以检索返回的数据并对其进行处理(在本例中,用新内容替换某些内容)

您必须在页面上包含此Javascript代码。在本例中,我使用jQuery发出AJAX请求:

$.ajax({
  url: /do/something  /* URL of your controller/action */
  success: function(data) { /* the data variable will receive the new content from the controller/action */
    $('#the_id_of_your_html_tag').html(data); /* replace the html content with the new data */
  },
});
在您的Kohana控制器中,您有如下内容:

class Controller_Do extends Controller_Template
{
  public function action_something()
  {
    $this->auto_render = false;

     // make some call to your database, use your model whatever
     echo 'some string or variable';
     return;
  }
}
视图的Html如下所示(根据示例):

什么
发送一个XHR,在会话中存储值。我想,我有点怀疑你没有意识到你的HTML不再是“视图”了。谢谢你的快速回复!我可以只返回变量吗,Daan?因为我想做的不是在屏幕上写东西,而是使用变量(一个大数组)中的数据来绘制一个包含两条曲线的图表。因此,我可以在控制器中使用“return$variable;”而不是“echo'somestring或variable';”,然后在Ajax的成功部分使用“curves=;”?这样我就可以用jquery(jqplot)呈现图表了?你可以返回你喜欢的任何东西,数组,json对象。在控制器中,我会说:“return json_encode($variable);”,这样您就可以在javascript的成功部分直接使用json对象,并使用jquery jqplot呈现图表。非常感谢,Daan!与此同时,我发现了这一点!:)对我起作用的是:echo json_encode($variable);返回;
<div id="the_id_of_your_html_tag">something</div>