6

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

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

是否违反同源政策?我说得对吗?有什么办法让它工作吗?



编辑#1 Google Chrome 开发者控制台仅显示发送到网页的请求(使用 Google 图表),但没有请求发送到该

页面中导入的外部 javascript(上面显示的外部 javascript)

EDIT#2

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

当您通过 ajax 加载页面时,该页面中的任何脚本标签都不会被执行。所以javascript没有被执行。

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



EDIT#3

实际上,我的 JSP 中有一个包含许多行的表。和每一个row contains a LINK;如果您将鼠标悬停在其上,则会在工具提示内显示 Google 条形图(每行不同)。因此,在悬停每一行时,要获取的图表的 URL 会有所不同。I want to pass this URL as a parameter.此 URL 将在 ajax 中用于将数据提取到工具提示中。

4

1 回答 1

3

这是一种伪代码,因为我假设您已经准备好 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>
于 2013-06-17T18:29:03.997 回答