2010-07-05 8 views
2

pré-information: (Si vous vous demandez où je veux en venir)Comment mettre à jour dynamiquement jQuery Flot de JSON natif

First Question: How to set a JS variable every n sec to a JSON array.

Merci à une aide a obtenu que tout va bien :) J'ai alors travaillé sur la limitation de la quantité totale dans le tableau, j'ai essayé de le régler à 10 mais chaque fois il s'arrêterait à 7 .. avec l'aide d'ici, ça a bien fonctionné.

Second Question: How to limit a native JSON array to 10 places.

fonctionne à nouveau parfaitement ..


Question:

Maintenant, je suis coincé à un stade où j'ai mon tableau JSON mise en forme dans le contexte exact J'aimerais. par exemple: [["0", "7"], ["0", "7"], ["0", "7"]] Et je vise à tracer ceci dans un Jquery Flot Graph . Maintenant, si je définir manuellement une variable:

var PlotData= [["0", "7"], ["0", "7"], ["0", "7"]] 

Jquery Flot tracera ce parfaitement mais comme une valeur incrémentiel qui commence à zéro, il ajoutera un graphique vierge puis ne l'actualiser. Mon code est le suivant:

var numbers = []; 
var jsonString = ""; 
var PlotData; 

function EveryOneSec() { 
    if (numbers.length == 10) { 
     numbers.shift(); 
    } 
    numbers.push(['0", "' Math.random()]); 
    jsonString = JSON.stringify({'numbers': numbers}); 
    PlotData = numbers; //set to numbers for now rather than the JSON just for testing. 
    $.plot($("#PlaceHolder"), [{ data: PlotData, points: { show: true}}]); 
    setTimeout(EveryOneSec, 1000); 
} 

Maintenant, la fonction passe toutes les secondes. Mais ne mettra pas à jour le tracé. Est-ce que quelqu'un sait ce que je suis manquant ou ce que je dois faire pour pouvoir mettre à jour dynamiquement le graphique de flot Jquery?

Répondre

0

essayer quelque chose comme ça ...

$.plot($("#PlaceHolder"), PlotData, {points: { show: true}}); 

aussi je pense, vous avez des citations non appariés ici

numbers.push(['0", "' Math.random()]); // typo? should it be like ["0", Math.random()] 
+0

Je suis en train de faire un point maintenant :). Thankyou ne fonctionne toujours pas bien mais son complot. – Sphvn

+0

Non car le stringify JSON ajoutera le premier et le dernier. – Sphvn

+0

Je l'ai eu aussi travailler .. cool :) http://jsfiddle.net/NuPSB/ – Reigel

3

Création d'une nouvelle parcelle comme le suggère Reigel n'est pas la voie à suivre - il aurait pu être en 2010 quand il a été écrit.

De nos jours, vous devez utiliser setData(), redraw() et éventuellement setupGrid().

var oldData = [[0,0],[1,1]], 
    newData = [[1,1],[2,2]], 
    graph = $.plot($("#plot"), oldData, options); 

graph.setData(newData); // Replace oldData with newData 
graph.setupGrid();  // Adjust axes to match new values 
graph.draw();   // Update actual plot 
+0

Merci d'être allé à l'effort d'afficher des informations mises à jour – Sphvn