【问题标题】:Call jqXHR.Abort() from Html.ActionLink从 Html.ActionLink 调用 jqXHR.Abort()
【发布时间】:2015-07-24 19:10:34
【问题描述】:

这是我的操作链接:

@Html.ActionLink("View Details", "Details", new { controller = "Patients", id = @Model.Payments.FirstOrDefault().RCMPatientID, acctHistoryRedirect = "acctInfo", defaultPaymentID = @Json.Encode(paymentID) }, new { target = "_blank", @class = "button button--primary button--sm" })

这是我的 ajax 函数:

var jqXHR;
    $(function () { 
        var xspinner = new Spinner();
        jqXHR = $.ajax({ /* complete */}) });

是否可以从操作链接调用function(){ jqXHR.abort(); },以便在单击时不运行 ajax 调用?

【问题讨论】:

  • 链接是否让您离开该页面?如果是这样,你真的关心 AJAX 请求吗?
  • 它确实导航到一个新页面,但是当我单击该链接时,它会显示 2 个加载图标,而不仅仅是一个。我试图通过中止它所在的 ajax 请求来使其中一个加载项不显示。
  • 也许问题是两个请求(或两个图标)最初是如何开始/显示的?我认为取消已经运行的可能不是正确的方法。您是否可以发布额外的代码来提供额外的线索?一般我们喜欢minimal reproducible examples。
  • 不幸的是,大约有 5 或 6 个文件涉及,每个文件中有很多代码。我不知道如何从中创建一个最小、完整和可验证的示例。我想我只需要继续寻找。对不起。

标签: jquery ajax html.actionlink


【解决方案1】:

在带有 ajax 调用的文件中,_History.cshtml,我在顶部添加了这个:

@{
    string isRedirect = "";
    if (HttpContext.Current.Request.QueryString["acctHistoryRedirect"] != null)
    {
        isRedirect = HttpContext.Current.Request.QueryString["acctHistoryRedirect"].ToString();
    }
}

将以下内容添加到文件的 javascript 部分:

<script>
var isRedirectToAcct = '@isRedirect';
.
.
.
$(function () {

        if (isRedirectToAcct == null || isRedirectToAcct == ''){
            var xspinner = new Spinner();
            $.ajax({ /*complete*/ })
    }
});
.
.
.
</script>

这解决了我运行两个 ajax 调用导致页面上显示两个加载微调器的问题。

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 2016-01-16
    • 2013-05-15
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    相关资源
    最近更新 更多