JS
SWFlocation = "open-flash-chart.swf";
getMyData = function()
{
$.post(
myJsURL,
{
passedval: 1234
},
function (returned_json) {
return returned_json;
},
"json"
);
}
swfobject.embedSWF(SWFlocation, "myChartDiv", "650", "200", "9.0.0", "", {"get-data":"getMyData"} );
使用firebug,如果我硬编码返回的JSON,图表工作正常。但是,当我按上述方式请求数据时 - 即在页面加载后,我收到了2032错误。
getMyData方法实际上从PHP脚本请求数据,而PHP脚本又从请求数据和外部API(像flickr这样的大数据库)请求数据,因此如果我们当前没有缓存结果,可能会有几秒钟的延迟。也许我的方式错了?
答案 0 :(得分:2)
你必须将swfobject.embedSWF()放入ajax回调中。
像这样:SWFlocation = "open-flash-chart.swf";
init_chart = function()
{
$.post(
myJsURL,
{
passedval: 1234
},
function (returned_json) {
swfobject.embedSWF(SWFlocation, "myChartDiv", "650", "200", "9.0.0", "", {"get-data":returned_json} );
},
"json"
);
}
init_chart();
答案 1 :(得分:2)
在致电$.ajaxSetup({async : false});
$.post();
例如
function ajaxchart() {
$.ajaxSetup({async : false});
var chart = '';
var url = "data.php";
var data = '';
var callback = function(resp) {
chart = resp;
};
$.post(url, data, callback, 'text');
return chart;
}
$(function() {
$("#test").click(function() {
swfobject.embedSWF("open-flash-chart.swf", "my_chart", "350", "200", "9.0.0", "expressInstall.swf", {"get-data":"ajaxchart"});
});
});
答案 2 :(得分:0)
只是猜测,因为我不使用Open Flash Chart但是因为你正在进行异步ajax调用,你的getMyData函数实际上并没有返回json值(你定义的回调函数)。
尝试预加载(可能在swf嵌入之前进行同步ajax调用?)数据并将其存储在var中,然后让你的getMyData函数只返回var。
答案 3 :(得分:0)
在Javascript中,声明变量flashvars
和var data
,如下所示:
var flashvars = {};
var data;
另外,请确保您具有此功能,该功能由swfobject.embedSWF自动调用:
function open_flash_chart_data(){
return JSON.stringify(data);
}
现在转到你的AJAX函数并改变你的AJAX-Success-call:
success: function(returned_json){
// we need to set both
// data and flashvars.ofc
data=returned_json;
flashvars.ofc = returned_json;
swfobject.embedSWF(SWFlocation, "myChartDiv", "650", "200", "9.0.0", "",flashvars);
我遇到了类似的问题,并且很难调试成功回调中需要变量data
和flashvars
。如果缺少这些变量(或function open_flash_chart_data()
),您将收到错误2032.