23. marts 2013 - 01:09Der er
19 kommentarer og 1 løsning
Problem med opdatering af indkøbskurv
Hej Derude! :-)
Jeg har leget lidt med jCart, som er et free PHP/Ajax-script, som fungerer ganske udemærket. Jeg har dog lige et enkelt problem. Når jeg tilføjer et produkt til kurven, og navigere videre rundt på sitet, og derefter fjerner det med "remove"-funktionen som også fremgår i selve indkøbskurven, så fjernes produktet ganske rigtigt i kurven, MEN når jeg så navigerer videre rundt på sitet igen, så fremgår produktet pludselig igen i indkøbskurven. Hvis jeg så tilføjer et produkt igen, så står der kun 1 produkt (som om det der lige var der igen automatisk, egentlig ikke var der).
Er der en forklaring på det? Det er som om den ikke har opdateret "cachen", men jeg kunne ikke forestille mig at det var det. Scriptet er så vidt jeg ved opbygget med sessions, og når en sessions fjernes (ved remove-funktionen af produktet), så burde den jo ikke eksistere længere.
Jeg håber der er nogen der har en idé om hvad dette kunne skyldes, og evt. et peg om en mulig løsning på problemet.
Mange tak på forhånd - og rigtig god påske til alle venlige sjæle derude! :-)
Sker det kun, når du navigerer tilbage til en side, du før har været på, mens du endnu havde noget i kurven? I så fald skyldes det, at browseren ikke henter siden på serveren, men fra PC'en selv. Derfor er siden ikke opdateret, når den ses anden gang.
Sker det også, når du går til andre sider, må det skyldes, at kurven hentes via Ajax med en GET-forespørgsel. Så skal du ind og pille i en JS-fil og sætte en unik parameter på kaldet
Hvis jeg tilføjer varer fra index'en, og fjerner dem fra denne side, så er der ingen problemer.
Det er ligeså snart at jeg har en vare i kurven, og så fjerner varen på en anden side end index-filen.
Men ja, jeg har følgende kode i jcart.js
function remove(link) { // Get the query string of the link that was clicked var queryString = link.attr('href'); queryString = queryString.split('=');
// The id of the item to remove var removeId = queryString[1];
// Remove the item and refresh cart display $.ajax({ type: 'GET', data: { "jcartRemove": removeId, "jcartIsCheckout": isCheckout } }); }
jQuery's Ajax tilbyder mulighed for lidt cache control. Prøv:
function remove(link) { // Get the query string of the link that was clicked var queryString = link.attr('href'); queryString = queryString.split('=');
// The id of the item to remove var removeId = queryString[1];
Jeg ved ikke præcist hvor i scriptet problemet ligger.
Når der er lagt en vare i kurven, og man så klikker videre på "login", "opret bruger", osv. og derefter trykker "fjern", således at produktet/produkterne bliver fjernet fra kurven, og nu klikker videre på siderne igen. Produktet skulle jo gerne være fjernet, den session der er gemt burde være slettet, men på nogle af siderne komme den frem igen.
Jeg synes ikke, problemet eksisterer længere. Jeg så godt problemet tidligere i dag, men nu er det der ikke længere.
I øvrigt kan du kun se dine navigationslinks, fordi du allerede har besøgt siderne. De er i udgangspunktet sorte og bliver først hvide, når de har været besøgt (a:visited). Derfor spurgte jeg efter links i #5 *o)
Jeg forsøgte lige (slettede alle browserdata og cache inden) igen: Jeg ligger en vare i kurven, trykker rundt på siden. Under f.eks. "Opret bruger" trykker jeg "fjern" oppe i kurven, produktet bliver fjernet. Nu trykker jeg rundt på de andre sider igen, og trykker så "Opret bruger" igen - og nu ligger produktet i kurven igen. Dette gælder umiddelbart kun "Opret bruger" samt "Login".
Okay, ja jeg tænkte ikke lige over at den linksene næsten var usynlige for dig, beklager. :-P
Det virker uoverskueligt. Jeg har arbejdet med lidt med .htaccess. Hvilket behov har jeg for at løse mit problem? Er det et par linjers kode i en .htaccess fil?
Jeg forstår, at det tydeligvis ikke skal være en "private-cache", men derimod en public-cache jeg skal have arbejde med.
Ja for pokker! Det var en vigtig detalje 'at cache'. Så må jeg bare håbe, håret er fedtet nok til, at det hænger fast til næste gang, jeg står med det problem *o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.