Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Javascript/PHP/AJAX] 'Oude' data blijft zichtbaar

Pagina: 1
Acties:

  • Remcooo87
  • Registratie: Maart 2009
  • Laatst online: 23-11 13:19
Beste medetweakers,

Ik ben mezelf Javascript/AJAX aan het aanleren. Ik ben hier opzich een heel eind mee, maar ik loop op dit moment op een punt vast.

Ik ben, om te oefenen, een site aan het aanmaken, waarin gegevens kunnen worden opgeslagen (over bijvoorbeeld personen) in een database.

Het bovenste gedeelte van het scherm bevat de 'invul velden' (comboboxes, textfields etc).
Het onderste gedeelte van het scherm is een table waarin deze gegevens worden weergegeven, met als laatste kolom een mogelijkheid tot verwijderen van deze persoon.

De 'knop' (img met javascript) roept een functie aan, die enkel de 'div' gegevens aanpast waar deze tabel instaat, zodat niet het hele formulier opnieuw wordt geladen:


JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function load_datascreen(sObj,sSoort,sFiltExt) {
    var geb;
    var sloc;

    geb= document.getElementById('hidden_geb').value;
    document.getElementById('hidden_proj').value = sObj;
    sFiltExt = sFiltExt || "";                      //sFiltExt is alleen meegestuurd bij add/edit/remove. Anders een lege string meegeven
    fltr = "act=show&obj="+sObj+"&med="+med+sFiltExt;
    if (sSoort == 'all' || sSoort == 'head') submit_javascript('GET','exec/data_jsexec.php?'+fltr+'&targ=head','data_add','true');
    if (sSoort == 'all' || sSoort == 'body') submit_javascript('GET','exec/data_jsexec.php?'+fltr+'&targ=body','data_show','true');

}

function submit_javascript(sMethod,sLink,sSource,bSubmit){      //sMethod = GET/POST; sLink = link to send; sSource = div where information goes, bSubmit(true/false) = form submitted?
    var xmlhttp;
    
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200 && bSubmit == 'true') document.getElementById(sSource).innerHTML=xmlhttp.responseText;
      }
    xmlhttp.open(sMethod,sLink,true);
    xmlhttp.send();
}


Dit werkt allemaal prima. De data_jsexec.php wordt netjes aangeroepen, en het desbetreffende record wordt verwijderd uit zowel de database (na check in de phpmyadmin is de record inderdaad weg), als de 'table' op de pagina. Echter, als ik naar een andere pagina switch, en vervolgens weer terug naar het gebruikers scherm, staat de record weer in de table op de pagina (terwijl hij wel nog steeds verwijderd is uit de database).

Misschien een domme vraag, maar heeft dit iets met caching te maken? Of klopt het script in de functie submit_javascript() niet?

Alvast bedankt!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 17:28

RM-rf

1 2 3 4 5 7 6 8 9

volgens mij heeft het vooral te maken met de keuze voor een GET-request..

een GET-request is er voor bedoeld gegevens op te vragen die geen statechange kennen en die dus cachebaar is,
dient je request niet te cachen maar herlaad te worden, moet je je request via POST versturen

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21:50
Of je headers controleren of een unieke string toevoegen; http://ajaxpatterns.org/X..._caching_be_controlled.3F
(En je weet dat je met jQuery wat makkelijker Ajax requests kan doen? http://api.jquery.com/category/ajax/)

  • Remcooo87
  • Registratie: Maart 2009
  • Laatst online: 23-11 13:19
Ah! Dus toch iets met de caching inderdaad.

Had inderdaad gehoord over jQuery, maar wilde het eerst op deze manier proberen. Heb het opgelost met

JavaScript:
1
var url = "sum.phtml?figure1=5&figure2=1&timestamp=" + new Date().getTime();


Inderdaad niet de beste oplossing, maar voor nu voldoet het even!
RM-rf en Barryvdh bedankt voor jullie snelle respons!

Deze mag dicht

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Een slotje is niet nodig op een topic als je je oplossing hebt. Zie daarvoor ook onze faq betreffende topiceinde ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij