ajax应该发布由循环加载的局部视图的当前索引
在我的页面上,我有一个图像旋转木马。每个图像块都是由图像和产品数据组成的局部视图。所以旋转木马实际上充满了通过循环从父部分视图加载的部分视图 当我选择要添加到购物车中的图像时,我使用ajax将其发布到控制器,这样就可以了 问题是ajax脚本为模型中的每个产品加载一次,即for循环的每次迭代和模型中的每个产品加载一次…脚本加载,结果是每个产品加载到购物车中…下面是一些代码 父部分ajax应该发布由循环加载的局部视图的当前索引,ajax,post,foreach,partial-views,Ajax,Post,Foreach,Partial Views,在我的页面上,我有一个图像旋转木马。每个图像块都是由图像和产品数据组成的局部视图。所以旋转木马实际上充满了通过循环从父部分视图加载的部分视图 当我选择要添加到购物车中的图像时,我使用ajax将其发布到控制器,这样就可以了 问题是ajax脚本为模型中的每个产品加载一次,即for循环的每次迭代和模型中的每个产品加载一次…脚本加载,结果是每个产品加载到购物车中…下面是一些代码 父部分 foreach (var p in Model) { <div id="view-option"
foreach (var p in Model)
{
<div id="view-option">
@Html.Partial("../Product/_ProductTitleHome", p)
</div>
}
子部分具有具有多个输入的窗体
<form id="addToCartForm" method="post" action="/Product/AddToCart">
<input type="hidden" name="ProductId" value="Model.ProductId" />
<input type="hidden" name="Sku" value="Model.Sku" />
<input type="hidden" name="Quantity" value="Model.MinQuantity" />
<input type="hidden" name="bundleItemsIds" value="Model.BundleItemsIds" />
<input type="hidden" name="SeoPageName" value="Model.SeoPageName" />
<button class="btn-card btn-add-cart red hvr-shadow" id="btn-addtocart-short" data-value="Model.ProductId"><i class="zf-cart"></i>ButtonAddToCart</button>
}
</form>
ajax调用是这样的
$'btn-addtocart-short'。单击函数e{
event.currentTarget;
//var dataObj=$'addToCartForm'。序列化;
var dataObj={
ProductId:“@Model.ProductId”,
Sku:“@Model.Sku”,
数量:'@Model.MinQuantity',
bundleItemsIds:“@Model.bundleItemsIds”,
SeoPageName:“@Model.SeoPageName”
}
如果dataObj!={
$.ajax{
url:“/Product/AddToCart”,
类型:POST,,
数据:dataObj,
成功:功能反应{
警惕“这起作用了”;
},
};
}
};
所以再一次…如果我点击一个图像块将其添加到购物车中,ajax执行的次数与模型中的产品执行的次数一样多…这也是因为这个部分是通过循环加载的
因此,我需要找到一种方法,让ajax只对单击的项目的索引执行
请帮助问题在于局部视图。每个图像都在一个局部视图中,对于加载到滑块中的所有图像…每次加载局部视图并执行Ajax…因此解决方案是将代码从局部视图中拉出,并上升一级到父视图…插入代码,问题就解决了。因为父视图只加载了一次,所以加载的所有图像和Ajax只触发了一次。当jquery构建dataObj时,它似乎只从第一个局部视图获取数据,而不管单击了哪个元素。