Php jQuery+;JSON+;打开flash chart,如何动态创建图表?
JS 使用firebug,如果我对返回的JSON进行硬编码,图表就可以正常工作。但是,当我像上面那样请求数据时,即在页面加载之后,我得到一个2032错误Php jQuery+;JSON+;打开flash chart,如何动态创建图表?,php,javascript,jquery,open-flash-chart,Php,Javascript,Jquery,Open Flash Chart,JS 使用firebug,如果我对返回的JSON进行硬编码,图表就可以正常工作。但是,当我像上面那样请求数据时,即在页面加载之后,我得到一个2032错误 getMyData方法实际上是从PHP脚本请求数据,而PHP脚本又从外部API(像flickr这样的大型API)请求数据,因此如果我们当前没有缓存结果,可能会有几秒钟的延迟。可能是我弄错了?只是一个猜测,因为我不使用Open Flash Chart,但由于您正在进行异步ajax调用,因此getMyData函数实际上没有返回json值(您定义的回
getMyData方法实际上是从PHP脚本请求数据,而PHP脚本又从外部API(像flickr这样的大型API)请求数据,因此如果我们当前没有缓存结果,可能会有几秒钟的延迟。可能是我弄错了?只是一个猜测,因为我不使用Open Flash Chart,但由于您正在进行异步ajax调用,因此getMyData函数实际上没有返回json值(您定义的回调函数是)
尝试预加载(可能在swf嵌入之前进行同步ajax调用?)数据并将其存储在var中,然后让getMyData函数简单地返回该var。只是一个猜测,因为我不使用Open Flash Chart,但由于进行异步ajax调用,因此getMyData函数实际上并没有返回json值(您定义的回调函数为)
尝试预加载(可能在swf嵌入之前进行同步ajax调用?)数据并将其存储在变量中,然后让getMyData函数简单地返回该变量。您必须将swfobject.embedSWF()放入ajax回调中 像这样:
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"} );
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"});
});
});
function open_flash_chart_data(){
return JSON.stringify(data);
}
您必须将swfobject.embedSWF()放入ajax回调中 像这样:
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"} );
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"});
});
});
function open_flash_chart_data(){
return JSON.stringify(data);
}
调用$.post();
范例
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();
调用$.post();
范例
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();
在Javascript中,像这样声明变量
flashvars
和变量data
:
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"} );
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"});
});
});
function open_flash_chart_data(){
return JSON.stringify(data);
}
另外,请确保您拥有此函数,该函数由swfobject.embedSWF自动调用:
var flashvars = {};
var data;
现在转到AJAX函数并更改AJAX成功调用,如下所示:
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"} );
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"});
});
});
function open_flash_chart_data(){
return JSON.stringify(data);
}
我遇到了一个类似的问题,很难调试成功回调中同时需要变量
data
和flashvars
。如果这些变量(或函数打开\u flash\u chart\u data()
)如果缺少,您将得到错误2032。在Javascript中,声明变量flashvars
和变量数据如下:
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"} );
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"});
});
});
function open_flash_chart_data(){
return JSON.stringify(data);
}
另外,请确保您拥有此函数,该函数由swfobject.embedSWF自动调用:
var flashvars = {};
var data;
现在转到AJAX函数并更改AJAX成功调用,如下所示:
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"} );
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"});
});
});
function open_flash_chart_data(){
return JSON.stringify(data);
}
我有一个类似的问题,很难调试成功回调中同时需要变量data
和flashvars
。如果缺少这些变量(或function open\u flash\u chart\u data()
),则会出现错误2032