ugrás a tartalomhoz

Ajax-os adat nem töltődik be a helyére (Explorer)

gabesz666 · 2009. Feb. 18. (Sze), 15.26
Sziasztok!

Na mi mással is lenne megint gond, mint az explorerrel? :) Természetesen, mivel ezt nem saját szórakoztatásomra írom, ezért fontos a kompatibilitás. A JS kód a következő:

setInterval(function() 
{ $.get('get.php', { w: 'all' }, function(data){
   var timestamp = data.timestamp
   }, 'json'); }, 1000);
Erre a jQuery-s ajax kérésre az alábbi válasz jön: { startTime: 1234962658, endAfter: 60, timestamp: 1234963602, clickNum: 6 }

Na most a problémám a következő: A válaszban szereplő adatokat szeretném textfieldekbe tölteni, de explorer alatt ez valahogy nem akar sikerülni (az első alkalommal, amikor betöltődik az oldal, akkor még beírja a dolgokat). Ezekre gondoltam: setInterval nem működik (működik), textfield értékének változtatása nem működik (működik, egy random szám generátorral teszteltem, és minden másodpercben változik), nem érkezik meg az adat (megérkezik). Tehát az egyenlőségjel mindkét oldalán levő kifejezés helyes, a progi mégsem megy. Mi lehet a gond?

Köszi!
 
1

Hogyan írod be a formba

Poetro · 2009. Feb. 18. (Sze), 17.08
function updateFields() {
  $.get('get.php', { w: 'all' }, function(data) {  
    // Megvan az adat.
    var timestamp = data.timestamp;
    // Frissítjük a form mezőket.
    $('form :text[name="startTime"]').val(data.startTime);
    $('form :text[name="endAfter"]').val(data.endAfter);
    $('form :text[name="clickNum"]').val(data.clickNum);
    $('form :text[name="timestamp"]').val(data.timestamp);
    // Akkor induljon az újabb timout ha már megvannak az adatok,
    // így nem lesz több konkurens frissítés.
    window.setTimeout(updateFields, 1000);
  }, 'json');
}
// Inditunk egy frissítést
window.setTimeout(updateFields, 1000);
2

Még egy furcsaság

gabesz666 · 2009. Feb. 18. (Sze), 21.10
Egy újabb észrevétel: csak akkor tölti be az adatokat az explorer, amikor megnyitom az explorer-t, de refresh-nél már marad a régi adat.
3

JS

gabesz666 · 2009. Feb. 18. (Sze), 22.18
Poetro, sajna nem működött a kódod. :( Itt az eredeti JS:

function setTime() {
	$.get('get.php', {
			w: 'all'
	}, function(data){
		window.startTime = data.startTime;
		window.endAfter = data.endAfter;
		window.currentTime = data.timestamp;
		$('#clicks_num').val(data.clickNum);
		
		window.endTime = startTime + endAfter;
		window.remainingSeconds = Math.floor(endTime - currentTime);
		window.remainingHours = Math.floor(remainingSeconds / 3600);
		window.remainingMinutes = Math.floor((remainingSeconds - (remainingHours * 3600)) / 60);
		window.remainingSecs = remainingSeconds - (remainingHours * 3600) - (remainingMinutes * 60);
	}, 'json');
}
setTime();

$('#click').click(function() {
	if (remainingSeconds < 30 && remainingSeconds > 0) {
		$.get('get.php', {
			w: 'updatetime'
		});
	}
	else if (remainingSeconds > 0) {
		$.get('get.php', {
			w: 'addclick'
		});
	}
});
	
setInterval(function() {
	if (remainingSeconds > 0) {
		setTime();
		
		$('#counter').val(remainingHours + ' óra ' +
		remainingMinutes +
		' perc ' +
		remainingSecs +
		' másodperc');
	}
	else {
		$('#counter').val('Kész!');
	}
}, 1000);
4

Nem tudtam meg többet

Poetro · 2009. Feb. 18. (Sze), 23.00
Ebből sajnos nem lehetett többet megtudni, ráadásul nem vetted figyelembe a kommentemet, hogy hanyagolni kellene a setInterval-t.
5

Kipróbáltam

gabesz666 · 2009. Feb. 19. (Cs), 10.07
Írtam, hogy a kódod nem működött...