私のサイトでは、「カートに追加」ボタンを使用してショッピング商品をロードしています。jqueryajax呼び出しを使用して動的にボタンを押します。ショッピングカート自体には、jcart、jqueryプラグインを使用します。
次にカートにアイテムを追加すると、jcartはajaxとPOSTを使用してphpファイルを呼び出します。すべて正常に動作し、商品はカートに正しく追加されますが、カートに商品を追加するたびにページが再読み込みされます。ajax呼び出しを使用して製品をロードしない場合(たとえば、ページに直接ロードする場合)、すべてが正常に機能するため、どこかで競合が発生している必要があります。手がかりはありますか?
これは私の製品です-関数とhtmlです。
...
<script>
function loadProducts(str) {
$.ajax({
type: 'GET',
async: true,
url: 'ajax/load.php',
data: {'max-id' : str},
cache: false,
success: function(response) {
$('#products').html(response).fadeIn('slow');
},
});
}
</script>
<script>
$(document).ready(function() {
var n = '';
loadProducts(n);
});
</script>
<script src="jcart/js/jcart.js"></script>
</body>
</html>
jcart-Pluginとそのajax-callは、次の場所にあります: http ://conceptlogic.com/jcart/standalone-demo/jcart/js/jcart.js
これがjcart.jsの関数です。
$.ajaxSetup({
type: 'POST',
url: path + '/relay.php',
cache: false,
success: function(response) {
// Refresh the cart display after a successful Ajax request
container.html(response);
$('#jcart-buttons').remove();
},
error: function(x, e) {
...
}
});
..。
function add(form) {
// Input values for use in Ajax post
var itemQty = form.find('[name=' + config.item.qty + ']'),
itemAdd = form.find('[name=' + config.item.add + ']');
// Add the item and refresh cart display
$.ajax({
data: form.serialize() + '&' + config.item.add + '=' + itemAdd.val(),
success: function(response) {
// Momentarily display tooltip over the add-to-cart button
if (itemQty.val() > 0 && tip.css('display') === 'none') {
tip.fadeIn('100').delay('400').fadeOut('100');
}
container.html(response);
$('#jcart-buttons').remove();
}
});
}
..。
// Add an item to the cart
// is called from the submit-buttons within each product picture
$('.jcart').submit(function(e) {
add($(this));
e.preventDefault();
});
「loadProducts()」関数は、これを各アイテムの#productsコンテナに入れます。
<form method="post" action="" class="jcart">
<fieldset>
<input type="hidden" name="jcartToken" value="<?php echo $_SESSION['jcartToken'];?>" />
<input type="hidden" name="my-item-id" value="SDK12345" />
<input type="hidden" name="my-item-name" value="Product Name" />
<input type="hidden" name="my-item-price" value="1.00" />
<input type="hidden" name="my-item-qty" value="1" />
<ul>
<li><img src="product-image.jpg"/></li>
<li>1.00 Dollar</li>
</ul>
<input type="submit" name="my-add-button" value="Add to cart" class="button" />
</fieldset>
</form>