在我的页面中,我有文件,音频和视频等文件的下载链接,点击该下载链接,我想更新数据库中的命中计数器,我使用jquery ajax请求的策略,将更新命中计数器但是问题是当我点击超链接它调用jquery函数但没有调用我的控制器操作并出现下载弹出窗口。编写代码
的参考问题可能是什么<a att="1" href="../Abc.doc">Download</a>
<a att="2" href="../Abcs.wmv">Download</a>
和jquery
$('a').click(function () {
var myurl = '<%= Url.Action("UpdateHits", "Media") %>';
var id = $(this).attr('att').toString();
$.ajax({
url: myurl,
type: "POST",
data: { Id: id },
success: function (data) {
alert(data);
}
});
});
答案 0 :(得分:2)
请确保通过返回false
取消默认操作,以便浏览器不会关注此链接。
$('a').click(function () {
var myurl = '<%= Url.Action("UpdateHits", "Media") %>';
var id = $(this).attr('att').toString();
$.ajax({
url: myurl,
type: 'POST',
data: { Id: id },
success: function (data) {
alert('success');
}
});
return false;
});
我还建议您生成适当的锚链接,而不是在javascript中经历所有这些痛苦:
<%= Html.ActionLink("Abc.doc", "UpdateHits", "Media", new { id = 1 }, null) %>
<%= Html.ActionLink("Abcs.wmv", "UpdateHits", "Media", new { id = 2 }, null) %>
简单地将它们ajaxify:
$(function() {
$('a').click(function() {
$.post(this.href, function(data) {
alert('success');
});
return false;
});
});
答案 1 :(得分:0)
你需要:
$('a').click(function (e) {
e.preventDefault();
var myurl = '<%= Url.Action("UpdateHits", "Media") %>';
var id = $(this).attr('att').toString();
$.ajax({
url: myurl,
type: "POST",
data: { Id: id },
success: function (data) {
alert(data);
}
});
return true;
});
防止默认停止跟踪链接,直到js完成所需的操作,抛出返回的truie以继续链接跟随。