Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340

    chiamata ajax un errore introvabile

    Ciao ragazzi, nuovamente a chiedere l'aiuto del forum, dal un paio di giorni sto facendo delle prove test con ajax, vorrei imparare ad usarlo, o meglio sono costretto a farlo.
    Sto cercando di capirne il funzionamento per un carrello, la prova è banale
    ho 4 prodotti con descrizione,prezzo che leggo da mysql e creo delle div affiancate con immagine ed informazioni, l'unica cosa richiesta è la quantità, impostata questa devo cliccare su acquista e aggiornare la tabella volatile dell'istanza legata all'indirizzo ip.
    Ma sto andando troppo avanti, per ora devo solo far eseguire un calcolo banale : prezzo*qty
    ma ho il primo errore bloccante, da ore cerco di capire ma non riesco:
    "Cannot read property 'value' of undefined", si ma di quale valore??? le ho provate tutte.
    Provo a postare il codice se qualcuno può aiutarmi, molto grato!!
    Codice PHP:
    <script>
    function 
    istanzaXHR() {
        var 
    obj;
        if (
    window.XMLHttpRequest) {    // Non Internet Explorer
            
    obj = new XMLHttpRequest();
        } else if (
    window.ActiveXObject) { // Internet Explorer
            
    obj = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return 
    obj;
    }

    obj=istanzaXHR();

    function 
    onStateChange() {    // Cambiamento Stato
        
    if (obj.readyState == 4) { // Caricamento Avvenuto
            
    if (obj.status == 200) { // con successo
                
    document.getElementById("risultato").innerHTML=obj.responseText// risultato
            
    } else {
                
    document.getElementById("risultato").innerHTML="?";
                
    alert("Errore: "+obj.statusText);
            }
        }    
    }

    function 
    invia() {

        
    inviaXHR(obj,"somma.php");
    }

    function 
    inviaXHR(obj,url) {
        try {    
            
    obj.open("POST"urltrue);    // Preparazione comunicazione
            
    document.getElementById("risultato").innerHTML="..."// caricamento in corso...
            
    obj.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
            
    obj.onreadystatechange onStateChange;
            
    prezzo_V=escape(document.somma.prezzo_V.value);    // valore del primo addendo
            
    qty=escape(document.somma.qty.value);    // valore del secondo addendo
            
    obj.send("prezzo_V="+prezzo_V+"&qty="+qty);    // Trasferimento
        
    } catch (e) {
            
    document.getElementById("risultato").innerHTML="0";
            
    alert("Errore: risultato "+e);
        }
        
    }
    </script> 
    questo invece è il codice php

    Codice PHP:

    <div class="content-area">
        
                <div class="content-elencoprodotti">
                    
               <?php

                $result 
    mysql_query("SELECT * FROM internet_shop");
                while(
    $row=mysql_fetch_assoc($result))
                {
                    
    $codice =htmlspecialchars($row['id']);
                    
    $name =htmlspecialchars($row['name']);
                    
    $desc =htmlspecialchars($row['description']);
                    
    $prezzo =($row['price']);
                    
    $dispo =intval($row['giacenza']);
                    
    $valore=0;    
                
                echo 

                <div class="product" >
                <form name="somma" class="jcart">
                [img]images/products/'
    .$row['img'].'[/img]
                        
                <fieldset>
                <input type="hidden"  name="id" value="'
    .$codice.'" />
                <input type="hidden"  name="name" value="'
    .$name.'" />
                 <input type="hidden" id="prezzo_V" name="prezzo_V" value="'
    .$prezzo.'" maxlength="6" />
                 
                <ul>
                [*][b] Disponibili : '
    .$dispo.'[/b]
                [*]Prezzo € : '
    .$prezzo.'
                [*]
                 Q.tà : <input id="qty"  name="qty" value="0" size="3" maxlength="4" />
                 
                
                [/list]
                         
                  [url="#"]<span>Acquista</span>[/url]  
                        
                </fieldset>
                </form>
                        
                
                </div>'
    ;
                    
                }

                
    ?>
                    
                   <div class="clear"></div>
                    
                </div>

        </div>
            
            <div class="bottom-container-border">         </div>
        </div>
    </div>
    lo script che viene richiamato da ajax è questo : somma.php
    Codice PHP:

    <?php
    if (isset($_POST['prezzo_V']) && isset($_POST['qty'])) {
        
    $prezzo_V=substr($_POST['prezzo_V'],0,8);
        
    $qty=substr($_POST['qty'],0,4);
        echo 
    $prezzo_V $qty;
    } else {
        echo 
    "Mancano dati";    
    }
    ?>

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    cosa sarebbe questo?
    document.somma.prezzo_V.value

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Ciao stefano79
    devo leggere il valore dei due campi, leggendo in alcuni esempi ho visto che impostano
    escape('campo form') per leggerne i dati

    quindi ho usato :

    prezzo_V=escape(document.somma.prezzo_V.value); // valore del primo addendo
    qty = escape(document.somma.qty.value); // valore del secondo addendo

    è sbagliato?

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    prova a sostituire
    Codice PHP:
    prezzo_V=escape(document.somma.prezzo_V.value);    // valore del primo addendo 
    qty=escape(document.somma.qty.value);    // valore del secondo addendo 
    con

    Codice PHP:
    prezzo_V=escape(document.getElementById("prezzo_V").value);    // valore del primo addendo 
    qty=escape(document.getElementById("qty").value);    // valore del secondo addendo 

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    mettendo come consigli tu non mi dà l'errore ma nel calcolo mi mette solo la prima scelta.
    mi spiego meglio, ho 4 div affiancate perchè ho solo 4 prodotti
    come dici te, mi calcola senza errori solo il primo dei prodotti, se seleziono il secondo o il terzo non calcola nulla. totale a zero.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    ok, quindi mi devo mettere in array i prodotti da ogni singola div? sbaglio?

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    ho guardato solo l'errore indicato, per il resto c'è un errore di base, ogni elemento del dom deve avere id univoco, altrimenti viene preso solo il primo elemento del dom

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