webForumDet fria alternativet

Vilken knapp triggade funktionen?

Webbutveckling

2 svar · 565 visningar · startad av Web-Tor

Medlem sedan nov. 200013 890 inlägg
Frågan#1

Jag har en e-handelssidan byggd med PHP, Javascript och AJAX.

Ett köp går till så här:
1. Sida med varor och en massa KÖP-knappar. Användaren trycker på en knapp.
2. En Javascript-funktion uppdaterar kundvagnen via AJAX.
3. På AJAX-sidan uppdateras en SESSION med varan man köpte.
4. AJAX-sidan triggar en JS-funktion som visar ett meddelande för användaren (i meddelandet står hur många varor man har i kundvagnen)

Nu till problemet: Jag vill veta vilken KÖP-knapp användaren klickade på (detta för att kunna placera meddelandet i punkt 4 på rätt ställe på skärmen).

Jag lyckas inte få till det! Det är AJAX-sidan som håller redan på antalet köpta varor så det är därifrån som anropet till punkt 4 måste ligga men den sidan vet ju inte vilken knapp användaren klickade på.

Ett alternativ är ju att skicka med KÖP-knappen hela vägen men finns det verkligen inte något enklare sätt?

Medlem sedan mars 20007 896 inlägg
#2

Du kan ju mellanlagra knappen i punkt 2, tills punkt tre har kört klart och då plocka upp den igen. Det låter märkligt om ajaxsidan sköter UI?

function updateCustomerBasket(btn, itemId) {
    new Request({
        url: 'addItemToBasket.php',
        method: 'post',
        data: {
            'itemId': itemId
        },
        onSuccess: function(response) {
            /* Lägg nu till meddelandet vid positionen för btn */
        }
    }).send();
}

...

<button onclick="updateCustomerBasket(this, "VaruID")">KÖP</button>

Nu använde jag Mootools Request-klass för att sköta ajaxanropet, men du förstår nog hur jag menar.

Medlem sedan nov. 200013 890 inlägg
#3

Jag tror att jag är med på hur du menar. Jag använder Prototype Ajax.Updater och "onComplete" för att göra vissa andra saker efter att Ajax-anropet är klart. MEN, funktionen updateCustomerBasket() i ditt exempel vet ju inte hur många varor som ligger i kundvagnen, eller? Då vet jag inte vilket meddelande som skall visas.

286 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
147 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
147 ms — ändringar (db)