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", url, true); // 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";
}
?>