jquery ajax在下载文件链接上的问题

时间:2010-10-09 15:11:15

标签: jquery asp.net-mvc

在我的页面中,我有文件,音频和视频等文件的下载链接,点击该下载链接,我想更新数据库中的命中计数器,我使用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);
                        }
                    });
                });

2 个答案:

答案 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以继续链接跟随。