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
    4,284
    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.
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 15% tra i post del forum; il 9% sul web.
    Ti resta l’1% ... usalo bene!

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  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
    4,284
    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.
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 15% tra i post del forum; il 9% sul web.
    Ti resta l’1% ... usalo bene!

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

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 © 2019 vBulletin Solutions, Inc. All rights reserved.