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

Firebugを使用して、返されたJSONをハードコーディングすると、グラフは正常に機能します。しかし、上記のようにデータを要求すると、つまりページが読み込まれた後、2032エラーが発生します。

getMyDataメソッドは実際にPHPスクリプトからデータを要求し、PHPスクリプトは外部API(flickrのような大きなもの)からデータを要求するため、結果が現在キャッシュされていない場合は数秒の遅延が発生する可能性があります。多分私はこれについて間違った方法で行っているのですか?

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

私はOpenFlashChartを使用していませんが、非同期ajax呼び出しを行っているため、getMyData関数は実際にはjson値を返していません(定義したコールバック関数は)。

データをプリロードして(swfを埋め込む前に同期ajax呼び出しを行うのではないでしょうか?)、データをvarに格納してから、getMyData関数でそのvarを返すようにしてください。

于 2009-12-01T21:54:09.127 に答える