Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    evento on onclick su pulsante

    Salve, in una pagina ecommerce ho il pulsante "aggiungi al carrello" cliccando sul quale, una funzione js mi richiama una pagina php che aggiunge il prodotto al carrello. Il problema è che se clicco più volte per acquistare più prodotti identici, il pulsante funziona solo al primo click, i successivi li ignora. Qualcuno sa dir mi come posso fare? Di seguito il codice del pulsante

    <button type="button" onclick="carrello('<?php echo $rsa['id'] ?>','carr<? echo $aa ?>','ag','originale')"> INVIA AL CARRELLO</button>

    di seguito la funzione carrello

    <script>
    function carrello(idprodotto,divo,stato,tipologia) {
    if (idprodotto == "") {
    document.getElementById(divo).innerHTML = "";
    return;
    } else {
    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 (this.readyState == 4 && this.status == 200) {
    document.getElementById(divo).innerHTML = this.responseText;
    }
    };
    xmlhttp.open("GET","ajax_caricacarrello.php?idprod otto="+idprodotto+"&stato="+stato+"&tipologia="+ti pologia,true);
    xmlhttp.send();
    }
    }




    </script>

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,682
    Salve, non hai dichiarato localmente la variabile xmlhttp (che sostanzialmente contiene l'oggetto AJAX) per cui viene dichiarata automaticamente a livello globale. Questo significa che stai usando, di volta in volta, la stessa istanza di tale oggetto per inizializzare, con open(), la richiesta AJAX. Il problema sta nel fatto che se effettui una richiesta già aperta (con open()) e come se richiamassi abort() che chiude la chiamata; vedi nota nella documentazione.

    Dovresti poter risolvere dichiarando localmente quella variabile, in modo che al richiamo della funzione carrello() si crei sempre una nuova istanza dell'oggetto AJAX.

    Prova a inserire questo come prima riga dentro la funzione carrello():
    codice:
    var xmlhttp;
    vedi se va.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Ho provato, ma ancora vengono ignorati i click successivi, qualche altra idea ??

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,682
    No, quella era l'unica causa possibile del problema in base a ciò che hai esposto qui.
    Assicurati di aver modificato correttamente il codice, di aver eventualmente fatto correttamente l'upload e di aver svuotato la cache.

    Lato JavaScript/AJAX non vedo altri possibili errori.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.