GkhanKarahanoullar O vakit şu şekilde size kısa bir tutorial geçeyim;
sayfanıza CDN linkini tanımlarsınız;
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
Böylelikle kütüphanenin kaynak kodlarını almış oluruz. Sonrasında ise JavaScript kodumuzu yazarız.
var jsonfile = {
"jsonarray": [{
"name": "Joe",
"age": 12
}, {
"name": "Tom",
"age": 14
}]
};
var labels = jsonfile.jsonarray.map(function(e) {
return e.name;
});
var data = jsonfile.jsonarray.map(function(e) {
return e.age;
});;
var ctx = canvas.getContext('2d');
var config = {
type: 'line',
data: {
labels: labels,
datasets: [{
label: 'Graph Line',
data: data,
backgroundColor: 'rgba(0, 119, 204, 0.3)'
}]
}
};
var chart = new Chart(ctx, config);
En yukarıda bulunan jsonFile yerine PHP'den dönen değerinizi yazarsınız. Sonrasında ise;
<canvas id="canvas"></canvas>
şu şekilde bir çağırım yaparsınız.
Böylelikle chart işlemi tamamlanmış olur. Bu kodları buradan aldığımı belirtmek isterim.
Şimdi sizin sorununuza gelelim.
Siz push komutu ile JS dilinde dizinize ekleme yapıyorsunuz. Sonrasında ise function dışında bu diziyi kullanmaya çalışıyorsunuz. Site hazır olduğunda işleyen fonksiyondan öte daha global bir değişken daha tanımlayıp fonksiyon içerisinde bunu iki değişkeni (numbersAdd ve yeni oluşturacağınız) eşitleyip, dışarı global değişkeni kullanın.
Yani;
var globalAdd = [];
$(document).ready(function(){
var numbersAdd = [];
$.getJSON("php/json.php", function(data){
$.each(data,function (key,item){
$("ul").append("<li>" + item.cdata + "</li>");
numbersAdd.push(item.cdata);
$("ul").append("<li>" + numbersAdd + "</li>");
globalAdd = numbersAdd; //düzenlenen yer
})
});
$("ul").append("<li>" + "!!!!"+ numbersAdd[5] + "</li>");
})
Şeklinde düzenlersiniz ve çağırırken globalAdd[] dizisini kullanırsanız işleminizin sağlıklı şekilde tamamlanması gerekmektedir. Belki syntax bazlı hatalar yapmış olabilirim, siz JS bilginiz ile onu düzenlersiniz. Deneme fırsatım olmadı.
İyi çalışmalar dilerim.