php – 从异步AJAX响应加载Google Chart

在旧的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包装器来帮助这个?还是有另一个我忽略的原因?

非常感谢

解决方法:

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

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

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

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

google.load("visualization", "1", {packages:["corechart"]});

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

希望这有助于某人.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...