在为JoomShopping组件编写的几乎所有代码行进行一些摔跤之后,我相信我已经找到了应该解决所有问题的答案。
当激活购物清单中的“购买”按钮时,一旦点击它就会使用以下链接语法将产品发布到结帐购物车:
index.php/cart/add?category_id=2&product_id=12&quantity=4
其中2是类别ID,12是产品ID等......这是由V.Vachev解决的,但我认为谨慎发布所有已完成/固定的oced:
$('.checkOut').live('click',function(){
var products= new Array();
$(".jshop_prod_cart").each(function(){
var product = new Object();
product.catid = $(this).find('[name="category_id"]').val();
product.id = $(this).find('input[name="product_id"]').val();
product.qanty = $(this).find('input[name^="quantity"]').val();
products.push(product)
$.ajax({
type: 'GET',
url: "shop-portal/add?category_id="+products[0].catid+"&product_id="+products[0].id+"&quantity="+products[0].qanty,
dataType: 'json',
})
})
})
返回:
http://www.domain.com/index.php/shop-portal/add?category_id=2&product_id=48&quantity=4
但它只返回1,我有多个动态条目,所有这些条目都需要被捕获。
我在研究这个,似乎我需要以某种方式缓存这些信息......有什么想法吗?
答案 0 :(得分:0)
网址传递不正确。它应该是这样的:
url: "/shop-portal/add?category_id="+catid+"&product_id="+id+"&quantity="+qanty,
现在我看到你有相同名字的数组(“catid”,“quantity”......)。你最终想要从数组中发送值吗?因为这是另一回事。确保“catid”,“id”和“qanty”是全局变量,并发送所需的值。
Joomla可能不期望JSON数据,尝试使用本机ajax请求
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert("Sent!");
}
}
xmlhttp.open("GET","/shop-portal/add?category_id="+yourvariable+"&product_id="+yourvariable+"&quantity="+yourvariable);
xmlhttp.send();
我不确定您要发送什么值。照顾他们(你的变量1,你的变量2 ......)
现在我看到你想传递数组中的值。试试
$.ajax({
type: 'GET',
data:products,
url: "/shop-portal/add?category_id="+products[0].catid+"&product_id="+products[0].id+"&quantity="+products[0].qanty,
dataType: 'json',
})
})
此请求仅发送第一个产品的值。产品是一个数组,因此您可能必须通过它循环并发送多个请求才能发送所有内容。
您可以使用console.log(产品)检查var“products”包含的内容。这将在控制台中显示内容(例如Firebug)。
$('.checkOut').live('click',function(){
var products= new Array();
$(".jshop_prod_cart").each(function(){
var product = new Object();
product.catid = $(this).find('[name="category_id"]').val();
product.id = $(this).find('input[name="product_id"]').val();
product.qanty = $(this).find('input[name^="quantity"]').val();
products.push(product)
$.ajax({
type: 'GET',
data:products,
url: "/shop-portal/add?category_id="+product.catid+"&product_id="+product.id+"&quantity="+product.qanty,
dataType: 'json',
})
})
});