Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 893
Heisann!

Jeg har et problem med et prosjekt jeg holder på med, no temperatursensorer og greier, som gir meg hodebry så det holder.

Problemet er egentlig ganske simpelt. Vel, hvis jeg bare hadde "sett" det selv, hadde jeg ikke spurt.

Det jeg prøver på, er å hente ut siste databaseverdier fra loggserveren min, via JSON/AJAX.
Jeg får svarene jeg vil ha fra JSON, og forsåvidt ut i javascript-delen, men, og her kommer problemet: jeg får ikke hentet ut det punktet i arrayen jeg vil.

Hvis jeg kjører en alert(point[1]) så viser den meg riktig verdi i popup-vinduet, men ved newpoint.update(point[1]) så får jeg ingen verdi i heletatt.

Hva gjør jeg feil?

Her er en kodesnupp fra scriptet som henter JSON verdiene:

Kode

		$.ajax({
			url: 'get_latest_data.php',
			dataType: 'json',
			success: function(point) {
		        var newpoint = chart.series[0].points[0];
		        alert(point[2]);
		        newpoint.update(point[2]);
			},
                });
Drar snart ut alt hår jeg har, som er veldig lite fra før av
Du må nesten vise mer kode enn det der. Vi kan umulig feilsøke noe vi ikke aner hvordan ser ut.

Du kan vel bla. ikke gjøre sånn du gjør i Javascript, newpoint vil jo bare eksistere inne i success funksjonen, hva er det du prøver åSPAMoppnå?
Sitat av Apehjerne Vis innlegg
Jeg får svarene jeg vil ha fra JSON, og forsåvidt ut i javascript-delen, men, og her kommer problemet: jeg får ikke hentet ut det punktet i arrayen jeg vil.

Hvis jeg kjører en alert(point[1]) så viser den meg riktig verdi i popup-vinduet, men ved newpoint.update(point[1]) så får jeg ingen verdi i heletatt.
Vis hele sitatet...
Da er det vel ikke arrayet, eller dataen du mottar, det er noe galt med? Er chart en global variabel, som vil være tilgjengelig i success-funksjonen? Jeg anbefaler deg å åpne javascript-konsollen i nettleseren for å se om det er noen feilmeldinger der. Eventuelt kan du skrive inn javascript selv, for å se om den chart-koden i det hele tatt fungerer. Da kan du f. eks kjøre "chart.series[0].points[0].update(1)" for å se om den i det hele tatt returnerer noe.
Trådstarter
7 0
Vel, jeg fant ut av det for et par dager siden!

Ved å gjøre en eval() så kan jeg gjøre som jeg trodde.

Her er scriptet i sin helhet:

Kode

 $(function () {
    $('#kjoleskap').highcharts({
	
	    chart: {
	        type: 'gauge',
	        plotBackgroundColor: null,
	        plotBackgroundImage: null,
	        plotBorderWidth: 0,
	        plotShadow: false
				//events: {
				//	load: requestData
				//},
	    },
	    
	    title: {
	        text: 'Kjøleskap'
	    },
	    
	    pane: {
	        startAngle: -120,
	        endAngle: 120,
	        background: [{
	            backgroundColor: {
	                linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
	                stops: [
	                    [0, '#FFF'],
	                    [1, '#333']
	                ]
	            },
	            borderWidth: 0,
	            outerRadius: '109%'
	        }, {
	            backgroundColor: {
	                linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
	                stops: [
	                    [0, '#333'],
	                    [1, '#FFF']
	                ]
	            },
	            borderWidth: 1,
	            outerRadius: '107%'
	        }, {
	            // default background
	        }, {
	            backgroundColor: '#DDD',
	            borderWidth: 0,
	            outerRadius: '105%',
	            innerRadius: '103%'
	        }]
	    },
	       
	    // the value axis
	    yAxis: {
	        min: 0,
	        max: 20,
	        
	        minorTickInterval: 'auto',
	        minorTickWidth: 1,
	        minorTickLength: 10,
	        minorTickPosition: 'inside',
	        minorTickColor: '#666',
	
	        tickPixelInterval: 30,
	        tickWidth: 2,
	        tickPosition: 'inside',
	        tickLength: 10,
	        tickColor: '#666',
	        labels: {
	            step: 2,
	            rotation: 'auto'
	        },
	        title: {
	            text: 'Grader C'
	        },
	        plotBands: [{
	            from: 0,
	            to: 5,
	            color: '#55BF3B' // green
	        }, {
	            from: 5,
	            to: 12,
	            color: '#DDDF0D' // yellow
	        }, {
	            from: 12,
	            to: 20,
	            color: '#DF5353' // red
	        }]        
	    },
	
	    series: [{
	        name: 'Grader',
	        data: [0]
	    }]
	
	},
	function (chart) {
		setInterval( 
		$.ajax({
			url: 'get_latest_data.php',
			dataType: 'json',
			success: function(point) {
		        var newpoint = chart.series[0].points[0];
		        newpoint.update(eval(point[2]));
			},
			cache: false
		}),300000);
	});
});
Fungerer utmerket!
Jeg vil tro at update-funksjonen krever en integer, mens ditt point-array inneholder string-verdier. Jeg ville nok brukt parseInt() fremfor eval().
Trådstarter
7 0
Hmm meget mulig du har rett i det, men verdiene jeg henter fra databasen er float.
Hva skjer egentlig med verdiene når man bruker json_encode() ?

Takk for tipset! Skal teste ut parseInt()
Er det sikkrere enn å bruke eval() ?