Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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
我可以将javascript对象传递回atk4页面吗?_Javascript_Arrays_Jqplot_Atk4 - Fatal编程技术网

我可以将javascript对象传递回atk4页面吗?

我可以将javascript对象传递回atk4页面吗?,javascript,arrays,jqplot,atk4,Javascript,Arrays,Jqplot,Atk4,从ATK4页面,我可以使用如下javascript帮助文件调用jqplot class jqplot extends View { function render() { $plot=$this->js(true)->univ()->jqplot($this->series, $this->opts); parent::render(); return $this; } } 在页面上 $chart = $p->add

从ATK4页面,我可以使用如下javascript帮助文件调用jqplot

class jqplot extends View {
  function render()
  {
    $plot=$this->js(true)->univ()->jqplot($this->series, $this->opts);
    parent::render();
    return $this;
  }
}
在页面上

   $chart = $p->add('jqplot', null, 'chart1');
   $chart->setSeries(array(10,20,15));
像这样定义一个jqplot.php

class jqplot extends View {
  function render()
  {
    $plot=$this->js(true)->univ()->jqplot($this->series, $this->opts);
    parent::render();
    return $this;
  }
}
在js帮助文件中,将php调用链接到javascript

$.each({
 jqplot: function(series, opts){
   console.log('jqplot series',series);
   console.log('jqplot options',opts);
   $plot=$.jqplot(this.jquery.attr("id"), series, opts);
   return $plot;   
 }
}

如果我在一个页面上有一个图表,并使用ajaxec调用重新加载它,它可以正常工作,但是如果我有几个图表彼此相邻,只有第一个图表是可以的,如果我调用reload,它旁边的一个图表将完全消失

我真正想做的是调用图表上的jqplot replot函数,并从页面向其传递新数据,但我如何才能做到这一点?jshelper中的$plot对象包含一个javascript对象,我需要这个对象来调用它的replot

我在想,当我第一次在javascript关联数组中创建对象,然后调用replot,查找id,如果找到,调用对象上的replot时,也许我可以存储该对象,但不确定这段代码是什么样子,或者我是否有正确的方法,因此任何帮助都值得赞赏


提前感谢您的帮助。

要做到这一点可能相当困难。首先,您需要正确处理jqPlot的销毁。您需要一个适当的jQueryUI小部件,能够通过反构造函数恢复所有内容。然后你就可以开始工作了


就敏捷工具包而言,它使用JavaScript销毁包含jqPlot的元素,重新加载HTML并重新执行JavaScript

但是在.js帮助程序中是否可以将javascript对象存储为会话变量。如果我把它放在一个关联数组中,键是divid,那么当调用replot时,js助手可以检索原始对象并修改它吗?因此,并不是真的将其返回到atk4,而是存储javascript对象,而不是使用ajaxec重新加载。您是否希望在atk4会话中保存javascript小部件的状态?我想你能做到。为什么你需要刷新页面呢?也许不需要调用reload,只需调用replot即可。你能解释一下你想要实现的目标吗?目前我正在重新加载包含图表的元素,但是当有两个图表并排时,这会导致其中一个在重新绘制之前完全消失。我真的很想调用replot,但是使用jqplot,replot函数需要在第一次概念上创建图表时使用的javascript对象,比如series=1,2,3;chart=jqplot(divname、series、options);新闻系列=4,5,6;图.replot(新闻系列);。问题是,当我创建图表时,我认为我需要将图表保存在某个地方,而这是一个客户端对象。