2010-04-16 8 views
2

J'essaie de créer un site de panier. Lorsqu'un utilisateur clique sur ajouter à l'image du panier sur la page du produit, le titre du produit affiche un texte "Le produit est dans votre panier" sans recharger la page. J'utilise la session et l'ajax mais pas de chance jusqu'ici. J'apprécie toute aide.De toute façon que je peux obtenir les valeurs d'un tableau PHP par ajax?

Mon html froid

<table id="<?php echo $productId; ?>" width="594" border="0" cellpadding="5" cellspacing="0"> 
    <tr> 
       <td><img src="<?php echo "$brandImage"; ?></td> 
    <td <?php echo $productName; ?> //The "The product is in your cart" will be showed here</td> 
     </tr> 
<tr> 
<td><a class="addToCart" href="javascript:void(0);" onclick="addToCart(<?php echo $productId?>)"> 
</td> 

Mon fichier Javascript (de addToCart.js)

function addToCart(productId){ 

var url="addToCart.php"; 
url=url+"?productId="+productId; 
url=url+"&sid="+Math.random(); 


$.post(
url, 
function(responseText){ 
    alert(responseText); //I wish I can get productData value from addToCart.php 
}, 
"html" 
) 

Mon fichier php (addToCart.php)

<?php SESSION_START(); 

$productId=$_GET['productId']; 
$cart=$_SESSION['cart']; 

if(isset($cart)){ 
$cart.=",".$productId; 
$product=explode(',',$cart); 
$totalItem=count($product); 

}else{ 
$cart=$productId; 
$totalItem=1; 

}; 
$productData=array(); 
foreach($product as $id){ 
$productData[$id]=(isset($productData[$id])) ? $productData[$id]+1 :1; 
}; 
$_SESSION['cart']=$cart; 
//print_r($productData); 
echo $productData; //Not sure what to do to send $productData back to my addToCart.js variable 




?> 

J'ai essayé pour rendre le code simple. Toute suggestion sera une aide précieuse. Merci

+0

J'aime votre HTML * froid *: P – alex

+0

lol ...... A BESOIN DE CONTRÔLE D'ÉPREUVE! .. – FlyingCat

Répondre

1

La manière la plus simple est d'utiliser json_encode() sur la variable. so ...

header('Content-type: text/javascript; charset=UTF-8'); // or what ever charset you're using 
echo json_encode($productData); 

alors vous pouvez juste lire les valeurs en responseText comme:

alert(responseText.whatever); 
+0

Merci arnorhs. Mon firebug montre le texte de réponse avec la valeur que je veux, mais je ne sais pas comment l'obtenir à partir de votre alerte (responseText.whatever) ... "quoi" signifie productData? – FlyingCat

+0

responseText (doit être appelé responseJson) sera votre objet json productData, ou tout ce que vous lancez dans la fonction json_encode() – arnorhs

+0

@Jerry: Si vous utilisez 'eval (responseText)', il le convertira en un tableau JS. I.e .: 'var data = eval (responseText); alerte (données [0]); ' – mattbasta

0

Je ne sais pas si cela aide, mais si vous revenez faux dans le lien. Renvoyer false signifie que le navigateur ne suivra pas le lien.

<a class="addToCart" href="javascript:void(0)" onclick="addToCart(<?php echo $productId?>); return false;"> 

De cette façon, le document ne rechargera pas.

Questions connexes