Beste,

Zoekmachine laat me in deze in de steek.
Ik haal json data op met getJson waarna ik deze 'append' in een list.
Nou wil ik graag zien welke nieuw zijn.

Kan iemand mij hierin helpen? Ik kan geen functie vinden als iets van een 'last inserted'/'insert_id', o.i.d. Wel kom ik op antwoorden om een class toe te voegen en dan hierop te controleren, maar geen idee hoe ik dat mij voor moet stellen.

Bvd


$(document).ready(function() {

	call();
	
	var refresh = setInterval(call,  5000);
	
	function call(){
		var data;
		$.getJSON('call.php?json', function(datanew) {
		
			if(data != datanew){
				data = datanew;
				$( '#list > ul' ).html( ' ' );
				$.each(data, function(index, value) {
					$.each(value, function(i, val){
						
						$('#list > ul#'+index).append('<li id="' + i + '">' + val + '</li>');
					});
				} );
			}
		});
		
	}
});

Edit: Vraag hopelijk verduidelijkt
Erwin H op 22/01/2014 15:05:30

Ligt eraan hoe en waar je die variabele hebt gedefinieerd, in welke scope. Zolang functie en variabele binnen dezelfde scope blijven dan kan het. Maar zonder code te zien is het moeilijk te zeggen of het zou moeten werken of niet...



	call();
	
	setInterval(call,  5000);

	var olddata;
	
	function call(){
		$.getJSON('call.php?json', function(data) {
			if(olddata !== data){
				//
			}
			$('#status').append( 'New: ' + data.beschikbaar + '<br />');
			$('#status').append( 'Old: ' + olddata.beschikbaar + '<br />'); // Hier is olddata leeg. data is wel gevuld.
			olddata = data; // olddata vullen
		});
	}
Ik denk dat het op zich wel werkt, alleen het probleem zal zijn dat bij je eerste call olddata leeg is. olddata.beschikbaar bestaat dus niet en daar zal javascript over vallen. De volgende regel wordt dan nooit uitgevoerd en bij de volgende call zit je dus weer met hetzelfde probleem.

oplossing 1: initieer olddata als:

var olddata = {beschikbaar: ''};


oplossing 2: check of beschikbaar een property van olddata is:

if ('beschikbaar' in olddata){
  $('#status').append( 'Old: ' + olddata.beschikbaar + '<br />');
} 
Bedankt! Oplossing 1 werkt, oplossing 2 niet.
Onderstaande code doet helemaal niks.

if ('beschikbaar' in olddata){
  $('#status').append( 'Old: true<br />');
} else {
  $('#status').append( 'Old: false<br />');
}
Waarschijnlijk omdat op dat moment olddata nog geen object is, maar een lege variabele. Als je olddata dan als:
[code lang="js"]
var olddata = {};
[/code]
definieert zou het wel moeten werken. Dan is het een (leeg) object. Overigens is de tweede manier dan wel netter, want dan krijg je ook geen gebroken code als de result van de server opeens niet helemaal correct is.
Erwin H op 23/01/2014 09:13:50

Waarschijnlijk omdat op dat moment olddata nog geen object is, maar een lege variabele. Als je olddata dan als:
[code lang="js"]
var olddata = {};
[/code]
definieert zou het wel moeten werken. Dan is het een (leeg) object. Overigens is de tweede manier dan wel netter, want dan krijg je ook geen gebroken code als de result van de server opeens niet helemaal correct is.


Topper! :) Nou werkt oplossing 2 ook. Heel erg bedankt!

var olddata = {};
if ('beschikbaar' in olddata){
	$('#status').append( 'Old: true<br />');//' + olddata.beschikbaar + '
} else {
	$('#status').append( 'Old: false<br />');//' + olddata.beschikbaar + '
}
olddata = data;
/*
Output
Old: false
Old: true
Old: true
...
*/


Toevoeging op 23/01/2014 09:51:48:

Ik vind het vervelend om te blijven vragen, maar waarom blijft de vergelijking false?

var olddata = {};

function call(){
	$.getJSON('.php?json', function(data) {
	console.log(olddata);
	console.log(data);
		if(olddata === data){ } else { // Of if(olddata !== data) of if(olddata != data) geeft zelfde resultaat
			console.log('Refresh');
			//
		}
		//
		olddata = data;
	});
}

Blijft het volgende als resultaat geven. Terwijl die zolang die het zelfde is toch geen 'refresh' moet loggen.

XHR finished loading: "". jquery-latest.js:8706
Object {beschikbaar: Object, bezet: Array[2], pauze: Array[2], offline: Array[2]}
.php:58
Object {beschikbaar: Object, bezet: Array[2], pauze: Array[2], offline: Array[2]}
.php:59
Refresh

Reageren