1

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"} );

使用萤火虫,如果我对返回的 JSON 进行硬编码,图表可以正常工作。但是当我按上述方式请求数据时 - 即在页面加载后,我收到 2032 错误。

getMyData 方法实际上从 PHP 脚本请求数据,该脚本又从外部 API(像 flickr 这样的大 API)请求数据,因此如果我们当前没有缓存结果,可能会有几秒钟的延迟。也许我会以错误的方式解决这个问题?

4

4 回答 4

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"});
  });
});
于 2010-12-04T04:28:57.883 回答
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();
于 2009-12-01T22:42:33.083 回答
0

只是一个猜测,因为我不使用 Open Flash Chart 但由于您正在进行异步 ajax 调用,因此您的 getMyData 函数实际上并未返回 json 值(您定义的回调函数是)。

尝试预加载(也许在嵌入 swf 之前进行同步 ajax 调用?)数据并将其存储在 var 中,然后让您的 getMyData 函数简单地返回该 var。

于 2009-12-01T21:54:09.127 回答
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);  

我有一个类似的问题,很难调试你既需要 varsdata又需要flashvars成功回调。如果这些变量(或function open_flash_chart_data())丢失,您将收到错误 2032。

于 2014-03-25T12:38:52.457 回答