从异步AJAX响应加载Google Chart

and*_*yg1 3 php ajax google-visualization

在旧的Google Chart API中,可以使用PHP来呈现图表,甚至还有一个包装器可以执行此操作:http: //code.google.com/p/gchartphp/

但是使用新的Chart API http://code.google.com/apis/chart/ 可以生成更多更漂亮的图表,但只能在浏览器中加载javascript.

我想要实现的效果是通过AJAX向服务器提交多项选择表单,让PHP更新数据库服务器,然后返回更新的图表.

在旧的API方式中,我可以做到这一点.但是以新的方式,我将javascript返回到浏览器并将其附加到文档以呈现图表.它不会因此而执行.我相信我可以eval()这个javascript,但这是不好的形式不是因为有人可以做一些讨厌的东西,他们不能 - eval()服务器端响应?

我怎么能克服这个?有没有PHP包装器来帮助这个?还是有另一个我忽略的原因?

非常感谢

and*_*yg1 6

我最终解决这个问题的方式非常明显.我只需要超越自己的想法,从不同的角度来看待它.

我正在尝试处理数据库信息的所有腿部工作,并使用PHP在服务器端创建Google Chart(在本例中为饼图).然后将其作为AJAX响应返回.

实际上,我需要做的就是返回创建饼图所需的数据(以及一些额外的元数据,例如目标元素id).我这样做是为了JSON.然后,通过浏览Google Charts文档,我能够找到如何使用客户端javascript来加载返回的JSON数据来触发API.然后让Google代码渲染图表客户端 - 所以我基本上将所有渲染责任转移到客户端浏览器.这是新旧图表API的不同之处.

需要大量的试验和错误以及Firebug提供的大量帮助.值得一提的一个重大绊脚石是,您需要在收到JSON响应之前加载所有Google JSAPI - 以便初始页面呈现 - 并且您必须执行以下操作:

google.load("visualization", "1", {packages:["corechart"]});
Run Code Online (Sandbox Code Playgroud)

确保它在页面呈现时加载.如果在页面完全呈现后调用此页面,则页面将重新加载.

希望这有助于某人.

  • 我正在撕扯我的声音试图解决这个问题,但阅读你的评论,它突然变得有意义.在示例代码中,在"google.load ..."语句之后,总会有一个类似google.setOnLoadCallback(drawVisualization)的语句; 但是当然你不需要使用回调,只要你准备好绘制它就可以自己调用drawVisualization(). (3认同)