javascript - 在 cluetip 中使用 google charts api 并通过 ajax 显示内容

标签 javascript ajax google-visualization cluetip

我有一个 jsp 页面,它使用 google charts api 以条形图的形式显示数据。 Here是它的代码。我想在工具提示中显示此页面 ( cluetip )。
当我直接在浏览器中打开该页面时,我的 Google Chart 代码运行良好。但是当我尝试通过 ajax 在工具提示中显示它时,工具提示中没有绘制图表。工具提示是空白的。我怀疑是因为在条形图 jsp 页面中导入了外部 javascript。

<script type="text/javascript" src="https://www.google.com/jsapi"></script

这是否违反了同源政策?我说得对吗?有什么办法让它发挥作用吗?



编辑#1

Google Chrome 开发人员控制台 仅显示发送到网页(使用 Google Chart)的请求,但没有向该页面中导入的外部 javascript 发送请求(上面显示的外部 javascript)。

编辑#2

我认为不请求获取外部 javascript 的原因是

when you load a page via ajax,any script tags in that page will not be executed. So the javascript is not getting executed.

ajax获取数据后如何手动执行javscript?



编辑 #3

实际上我的 JSP 中有一个包含很多行的表。每个行包含一个LINK;如果您将鼠标悬停在其上,Google 条形图将显示在工具提示中(每行不同的一个)。因此,在悬停每一行时,要获取的图表的 URL 将不同。 我想将此 URL 作为参数传递。 并且此 URL 将在 ajax 中用于将数据提取到工具提示中。

最佳答案

这是一种伪代码,因为我假设您已经准备好 chart.jsp 页面。我用 PHP 进行了测试,并且运行良好。我也在使用 QTip2 .

这是您的 chart.jsp 页面:

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

int foo = Integer.parseInt(request.getParameter("foo"));
 switch(foo) {
  case 1:
  print
  <script>
  google.load('visualization', '1', {packages:['corechart']});
  function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['Year', 'Sales', 'Expenses'],
      ['2004',  1000,      400],
      ['2005',  1170,      460],
      ['2006',  660,       1120],
      ['2007',  1030,      540]
    ]);

    var options = {
      title: 'Company Performance',
      hAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
    };

    var chart = new google.visualization.ColumnChart(document.getElementById('visualization'));
    chart.draw(data, options);
  }
  google.setOnLoadCallback(drawChart);   
  </script>     
  break;
    ...
}

<div id="visualization"></div>

另一方面,您通过 iframe 在工具提示中调用 chart.jsp:

<script>
$(function() {
  $('.tip').qtip({
    content: function(){
      var rel = $(this).attr('rel');
      return $('<iframe id="tip" frameBorder="0" src="chart.jsp?foo='+ rel +'" />')
    },
    hide: 'unfocus, click'
  }); 
});
</script>

<a class="tip" href="javascript:void(0)" rel="1">Hover</a>

关于javascript - 在 cluetip 中使用 google charts api 并通过 ajax 显示内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17122789/

相关文章:

jquery - 在rails中执行AJAX Post而不传递authenticity_token

charts - 谷歌图表 : style specific labels

javascript - 使用到达路由器导航到 404 路由

javascript - 如何使用jquery区分html/text按钮内容

javascript - 等到所有脚本都完成后再启用按钮

javascript - 从两个数组创建 Google Chart 数据表数组

javascript - 谷歌饼图 : How can I change the color of lines in the legend?

javascript - 聚合物应用程序抽屉在关闭时留下悬挂的 wrapper ,内容不会占用所有空间

javascript - 使用 javascript 生成的 html 代码不适用于 jquery sortable

javascript - 如何根据值在 Javascript 中自动选择 Ajax 下拉列表