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

Reload div overrides pagina

Pagina: 1
Acties:

  • devloomax
  • Registratie: Juli 2011
  • Laatst online: 15-04 19:57
Ik ben bezig met een site voor iemand en haal op een bepaald punt recenties uit een XML-bestand.
Dit met javascript/jquery. Onderaan de recensies, die correct worden weergegeven plaatste ik een link, die het divje erboven opnieuw inlaadt, maaar met de nieuwe variabelen voor de volgende reacties.. Bij het opnieuw inladen overschrijft hij echter de body tag in plaats van de div, hoewel in javascript de jusite div staat aangegeven.

http://lavabeau.com
--> net onder de homepage en dan klikken op recensies...

Heb reeds vele manieren geprobeerd om de recensieloader nieuwe recensies te laten laden maar ook andere methodes gaven ditzelfde resultaat (bv div verwijderen en inladen via jquery...)

  • NNF
  • Registratie: November 2003
  • Laatst online: 29-11-2024

NNF

Het zou helpen als je de relevante code in het topic plaatst. Je kunt moeilijk van mensen verwachten dat ze in de +/- 30 (!) JavaScript-bestanden die jouw site inlaadt gaan zitten graven.

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Als je de hoofdletter er uit haalt doet ie het wel... sorry dat ik het zeg, maar in termen van code en UX is deze site niet bepaald het neusje van de zalm.

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

JavaScript:
1
2
3
4
function Recensies() {
/* Yada */
document.write(...);
}


Je zult de content ergens naar toe moeten schrijven, niet in het wilde weg met document.write() (waar verwacht je de content als je deze functie aanroept nadat de pagina is geladen?).
http://stackoverflow.com/...considered-a-bad-practice

  • devloomax
  • Registratie: Juli 2011
  • Laatst online: 15-04 19:57
Dankjewel! Ik zal dit even gaan uittesten...

  • devloomax
  • Registratie: Juli 2011
  • Laatst online: 15-04 19:57
En verder is de code van de site inderdaad een soep en veel te log, maar als het budget van de klant uitzonderlijk klein is en de wensen uitzonderlijk groot dan blijft er daar helaas weinig tijd voor over.

  • devloomax
  • Registratie: Juli 2011
  • Laatst online: 15-04 19:57
Ik heb de code aangepast en nu werkt ze, bedankt voor de hulp!
Heeft er nog iemand een idee om het eventueel beter te maken?


JavaScript: dixys-recensieloader.js
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
var yR = 0;
var zR = 0;// variabelen eenmalig op nul zetten bij laden webpagina

function Recensies() {
yR = zR;
zR = yR + 6; //variabelen worden bij elke run van de functie verhoogt om nieuwe recensies op te halen

        
if (window.XMLHttpRequest)
  {// code voor IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code voor IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","feedbacks.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; //xml inladen


var divLoader = document.getElementById("Recensie");
divLoader.innerHTML = "" ; //div leegmaken
var x=xmlDoc.getElementsByTagName("RECORD");
for (i=yR;i<zR;i++)
  { 
  var p=document.createElement("p");
  var strong=document.createElement("strong");
  strong.className = "white";
  var feedback=document.createTextNode(x[i].getElementsByTagName("Feedback")[0].childNodes[0].nodeValue) ;
  var bezocht=document.createTextNode("Bezocht op: ") ;
  var visitdate=document.createTextNode(x[i].getElementsByTagName("VisitDate")[0].childNodes[0].nodeValue) ;
  var door=document.createTextNode(" door ") ;
  var firstname=document.createTextNode(x[i].getElementsByTagName("First_Name_Short")[0].childNodes[0].nodeValue) ;
  if (typeof(x[i].getElementsByTagName("City")[0].childNodes[0]) == "undefined") 
  { var uit=document.createTextNode("")
  var city=document.createTextNode("") ; }
   else
   {var uit=document.createTextNode(" uit ");
   var city=document.createTextNode(x[i].getElementsByTagName("City")[0].childNodes[0].nodeValue) ;}
  var sterren=document.createElement("img");
  sterren.src="/images/5sterren.png";
  sterren.style.marginLeft="50px";
  sterren.style.width="105px";
  
  strong.appendChild(feedback);
  p.appendChild(strong);
  p.appendChild(document.createElement("br"));
  p.appendChild(bezocht);
  p.appendChild(visitdate);
  p.appendChild(door);
  p.appendChild(firstname);
  p.appendChild(uit);
  p.appendChild(city);
  p.appendChild(sterren);
  divLoader.appendChild(p);
  }
}

[ Voor 4% gewijzigd door devloomax op 10-06-2014 17:04 . Reden: Commentaar bijgevoegd ]


  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
devloomax schreef op dinsdag 10 juni 2014 @ 17:00:
Ik heb de code aangepast en nu werkt ze, bedankt voor de hulp!
Heeft er nog iemand een idee om het eventueel beter te maken?
Dat haalt helemaal niet 'elke keer nieuwe recensies op'.

Dat haalt elke keer het complete bestand opnieuw op (synchronous ipv asynchronous nog wel), parseert het elke keer helemaal opnieuw naar een XML document, haalt elke keer alle RECORD nodes op, en loopt daarna pas door een beperkte slice van die records heen.

Beste hulp die ik je hier kan geven is: rode streep er door en opnieuw beginnen.


Begin eens met die XML aan de serverkant te processen en dan elke keer kleine stukjes daarvan terug te sturen; gewoon als HTML, die je direct in kunt voegen.

[ Voor 60% gewijzigd door R4gnax op 10-06-2014 20:26 ]


  • devloomax
  • Registratie: Juli 2011
  • Laatst online: 15-04 19:57
R4gnax schreef op dinsdag 10 juni 2014 @ 20:21:
[...]


Beste hulp die ik je hier kan geven is: rode streep er door en opnieuw beginnen.


Begin eens met die XML aan de serverkant te processen en dan elke keer kleine stukjes daarvan terug te sturen; gewoon als HTML, die je direct in kunt voegen.
Het probleem:
Dit XML-script komt van een extern systeem en wordt elk uur gedownload (cron job). Is het dan niet geheel overkill om hier een script voor te schrijven dat elk uur na het ophalen van het xml-bestand, dit herschrijft of in een database zet? Of is er hier een snelle methode voor die ik heb overzien.
En zoals vermeld --> klant heeft zijn budget al lang verbruikt.

Dat dit (en zeker naar de toekomst toe|op basis van snelheid/datagebruik ) totaal niet echt gezond is dat wist ik al toen ik eraan begon.

  • Merethil
  • Registratie: December 2008
  • Laatst online: 09:03
Je zou de content kunnen pushen naar iedereen die zich subscribed met behulp van iets als Meteor server.

Het overschrijven van iets in een database is een simpele actie dus da's de moeite niet. Vraag is waarom je dat in een database zou willen stoppen: als het een enkele xml-file is dan is het nutteloos.

Een betere optie in mijn ogen is het volgende stappenplan:

- Cronjob haalt xml op
- Lees xml uit en schrijf data naar database in een logische opbouw (tabel == xml-velden? Bij meerdere niveau's, mogelijk meerdere tabellen), als die data nog "onbekend" is
- push data naar alle clients

In het geval van verwijderde data zou je kunnen werken met een "removed"-flag als het handig is de data te moeten behouden voor "future reference".

Indien dit alles te lastig/overbodig is: maak xml file aan / overschrijf in je cronjob en laat de website die uitlezen serverside. Html naar alle clients en klaar!

  • devloomax
  • Registratie: Juli 2011
  • Laatst online: 15-04 19:57
Dan tendeer ik eerder naar het tweede:
Merethil schreef op dinsdag 10 juni 2014 @ 22:59:
Indien dit alles te lastig/overbodig is: maak xml file aan / overschrijf in je cronjob en laat de website die uitlezen serverside. Html naar alle clients en klaar!
Maar wat zou beter zijn, het live uitlezen van de xml aan de serverkant (--> zal dit het bezoeken van de site dermate vertragen?) of het voorbereiden van een php-cron-script dat de html-code al voorbereid (bijv. terug om het uur)? En deze dan juist loaden in de div zoals die daar wordt geprepareerd?

  • Dennahz
  • Registratie: November 2001
  • Laatst online: 21-11 22:57

Dennahz

Life feels like hell should.

devloomax schreef op dinsdag 10 juni 2014 @ 07:36:
En verder is de code van de site inderdaad een soep en veel te log, maar als het budget van de klant uitzonderlijk klein is en de wensen uitzonderlijk groot dan blijft er daar helaas weinig tijd voor over.
Misschien moet je er dan uberhaupt niet aan beginnen, of gewoon realistisch zijn met hetgeen mogelijk is voor dat budget. Dit code pareltje staat straks op jouw naam, dus niet echt goeie reclame :)

Twitter


  • Merethil
  • Registratie: December 2008
  • Laatst online: 09:03
devloomax schreef op dinsdag 10 juni 2014 @ 23:19:
Dan tendeer ik eerder naar het tweede:


[...]


Maar wat zou beter zijn, het live uitlezen van de xml aan de serverkant (--> zal dit het bezoeken van de site dermate vertragen?) of het voorbereiden van een php-cron-script dat de html-code al voorbereid (bijv. terug om het uur)? En deze dan juist loaden in de div zoals die daar wordt geprepareerd?
Logischerwijs is het sneller de html al voor te bereiden: je zou om het uur de xml kunnen opvragen, parsen en verwerken naar je html pagina die je inleest in de locatie van de div. Niet helemaal volgens coding guidelines maar het is een optie die wel erg snel zal zijn, omdat je dan gewoon als client alleen een "statische" pagina inlaadt in de div en als server alleen html serveert, zonder allerlei lookups te hoeven doen.

  • NNF
  • Registratie: November 2003
  • Laatst online: 29-11-2024

NNF

De meerwaarde van een server side-oplossing lijkt mij eigenlijk beperkt. Tuurlijk is het 'mooier', maar dan had je daar eerder aan moeten denken en meer geld moeten vragen voor deze feature :P We hebben het over een XML met hooguit een paar honderd records, dat is echt peanuts voor een browser. Wat wel echt heel erg lelijk is, is dat je het complete bestand steeds weer opnieuw inlaadt als er op 'volgende' wordt geklikt. Bestand laden en parsen moet je gewoon éénmalig doen bij het laden van de pagina, dan sla je 'm op als object en kun je daar steeds nieuwe recensies uit halen.

[ Voor 13% gewijzigd door NNF op 11-06-2014 22:17 ]


  • Tribits
  • Registratie: Augustus 2011
  • Laatst online: 02:56

Tribits

Onkruid vergaat niet

NNF schreef op woensdag 11 juni 2014 @ 22:16:
We hebben het over een XML met hooguit een paar honderd records, dat is echt peanuts voor een browser.
Euh nee, het gaat hier om een bestand dat nu al meer dan 1000 records bevat en kennelijk alleen maar groeit. Vandaar waarschijnlijk ook de hoeveelheid kritiek op de huidige manier van werken.

Master of questionable victories and sheer glorious defeats


  • Merethil
  • Registratie: December 2008
  • Laatst online: 09:03
NNF schreef op woensdag 11 juni 2014 @ 22:16:
De meerwaarde van een server side-oplossing lijkt mij eigenlijk beperkt. Tuurlijk is het 'mooier', maar dan had je daar eerder aan moeten denken en meer geld moeten vragen voor deze feature :P We hebben het over een XML met hooguit een paar honderd records, dat is echt peanuts voor een browser. Wat wel echt heel erg lelijk is, is dat je het complete bestand steeds weer opnieuw inlaadt als er op 'volgende' wordt geklikt. Bestand laden en parsen moet je gewoon éénmalig doen bij het laden van de pagina, dan sla je 'm op als object en kun je daar steeds nieuwe recensies uit halen.
Maar in de backend een XML parsen en klaarzetten in een database is toch niet heel moeilijk? Sowieso snap ik niet waarom je recensies in een XML zou hebben ipv direct de database inschiet zodra ze gemaakt worden; dat zou makkelijker parsen en ophalen zijn...
Pagina: 1