【发布时间】:2012-10-13 15:47:14
【问题描述】:
我尝试让一个链接触发一个 javascript 函数,该函数会触发一个 ajax 调用来删除一个项目。
像这样:
<a class="delete" href="@item.Product.Id">(x)</a>
点击叉号会显示要删除的产品的id。 href 属性存在的唯一原因是携带值。
$(document).ready(function () {
$('.delete').click(function (e) {
e.preventDefault();
var id = $(this).attr("href");
deleteItem(id);
return false;
});
});
Ajax 调用:按要求:
function deleteItem(id) {
$.ajax({
url: "/Shoppingcart/RemoveItem",
type: "POST",
data: "id=" + id,
cache: false,
error: function (xhr, status, error) {
console.log(xhr, status, error);
},
success: function () {
$.ajax({
url: "/Shoppingcart/Index",
type: "GET",
cache: false,
error: function (xhr, status, error) {
console.log(xhr, status, error);
},
success: function (result) {
success(result);
}
});
}
});
}
成功功能用于获取购物车的更新版本。 这实际上工作得很好。但是,在整个周期的中途,我得到了一个奇怪的页面刷新。
我点击链接。
页面刷新,项目没有被删除。
我再次点击链接。
页面未刷新。
项目被删除。
为什么我必须点击两次,我该怎么做才能解决这个问题?
【问题讨论】:
-
为什么不直接用id来保存产品的id呢?
-
尝试将
console.log('ready')添加为就绪回调的第一行。也许您在调用ready回调之前点击了?$(document).ready(function(){console.log('ready');}); -
问题不应该出在您引用的代码中,您正在做正确的事情来防止默认操作。它可能在
deleteId中。但我强烈建议您不要在href中输入无效值。请改用data-*attribute。滥用href是个坏主意。 -
为什么要使用 和 onclick!!!!只需使用
- 或
来防止冲突。好吧,<a>默认的样式类似于链接(指针光标、下划线等),所以在这里使用它不是一个坏主意。问题只是使用href来执行 OP 正在尝试做的事情。 - 或
标签: javascript html ajax hyperlink refresh