jQuery + JSON + Open flaş grafik, nasıl anında bir grafik oluşturabilirsiniz?

4 Cevap php

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

Ben geri JSON kodlamalısınız eğer Firebug kullanarak, grafik çalışıyor. Ben yukarıdaki gibi veri talep Ama - sayfa yüklendikten sonra, yani, ben bir 2032 hatası alıyorum.

GetMyData yöntem aslında sonuçları anda bizim tarafımızdan önbelleğe değilse dönüş istekleri kadar gelen ve HARİCİ API ​​(flickr gibi büyük bir) verileri birkaç saniye gecikme olabilir ki bir PHP komut dosyası veri ister. Belki bu konuda yanlış şekilde gidiyorum?

4 Cevap

Sen ajax geri arama içine swfobject.embedSWF () koymak zorunda.

gibi bu:

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();

Eğer $.post(); aramadan önce sadece $.ajaxSetup({async : false}); kullanın

örnek

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

Sadece bir tahmin ben Open Flash Chart kullanabilirsiniz ama yok gibi yapıyoruz beri uyumsuz ajax sizin getMyData fonksiyonu aslında (eğer tanımlı arama fonksiyonu) json değer döndüren değildir diyoruz.

Sonra getMyData işlevi sadece o VAR dönün, (belki swf embed önce senkron bir ajax arama yapmak?) Verileri önyükleme ve bir var saklayarak deneyin.

JavaScript, bir değişkenin declair flashvars ve bir var data Bunun gibi:

var flashvars = {};
var data;

Ayrıca, otomatik olarak swfobject.embedSWF tarafından çağrıldığında bu işlevi, sahip olduğunuzdan emin olun:

 function open_flash_chart_data(){
     return JSON.stringify(data);
     }

Şimdi AJAX-fonksiyona gitmek ve bu gibi AJAX-Başarı-çağrı değiştirin:

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

Ben benzer bir sorun vardı ve bunu başarı geri arama hem de değişkenler data ve flashvars ihtiyaç oldukça zor debug oldu. Bu değişkenler (veya function open_flash_chart_data()) eksik varsa, hata 2032 alırsınız.