【问题标题】:axja call in success callback of first call only works when breakpoint is set第一次调用的成功回调中的axja调用仅在设置断点时有效
【发布时间】:2018-03-04 23:57:19
【问题描述】:

我有一个 aps.net MVC 网页,包括。 Bootstrap 和一些插件。要删除记录,我想进行确认,为此我使用 Bootbox 插件。删除后(第一次 ajax 调用)我想重新加载页面(如果成功,第二次 ajax 调用)

实际上,一切似乎都正常,但第二次调用只是在我在浏览器中设置断点并介入时才完成。没有它看起来第二次调用只是被跳过了。我在控制台中没有发现任何错误消息。

代码如下:

bootbox.confirm({
    title: 'Kategorie löschen',
    message: '<div class="text-center text-danger">Möchten Sie die Kategorie wirklich löschen?</div>',
    buttons: {
        confirm: {
            label: 'Ja',
            className: 'btn-success'
        },
        cancel: {
            label: 'Nein',
            className: 'btn-danger'
        }},
    callback: function (result) {
        if (result == true) {
            $.ajax(
                {
                    url: '@Url.Action("CategoryDelete", "Admin")',
                    type: 'POST',
                    data: { cid : catid },
                    success: function (delresult) {
                        if (delresult.success) {
                            $.ajax({
                                url: '@Url.Action("CategoryList", "Admin")'
                            });
                        }
                        else {
                            bootbox.alert({
                                title: 'Kategorie löschen',
                                message: '<div class="text-center text-danger">Die Kategorie konnte nicht gelöscht werden!</div>',
                                buttons: {
                                    ok: {
                                        label: 'ok',
                                        className: 'btn-default'
                                    }
                                }
                            });
                        }
                    }
                }
            )
        }}
})

由于是第一个问题,我不知道是否需要提供任何进一步的信息。 啊,这发生在 Firefox 和 Chrome 中。在两个浏览器中,它在设置断点时工作。

所以问题是:代码是否有问题,即使它似乎可以工作,还是我错过了其他东西?

感谢任何帮助和建议。提前谢谢你。

【问题讨论】:

  • "仅在设置断点时有效" 每次看到这个,可能是因为您在调用回调之前使用了该值,这是由于对异步事件的工作原理缺乏了解造成的。
  • 也许我不太明白,当你说“因为你在调用回调之前使用了这个值”,但我认为我没有。但是,是的,我不熟悉 JS,更不熟悉 ajax。但是 Tieson T. 的回答帮助了我,所以对我来说很好。谢谢!

标签: javascript ajax asp.net-mvc bootbox


【解决方案1】:

如果您的意图是在删除操作后重新加载页面,则:

$.ajax({
    url: '@Url.Action("CategoryList", "Admin")'
});

没有做你认为它做的事。重新加载页面需要设置页面的location:

if (delresult.success) {
    window.location = '@Url.Action("CategoryList", "Admin")';
}

或者,只需使用reload 函数:

if (delresult.success) {
    window.location.reload(true);
}

【讨论】:

  • 实际上,我在另一个问题中读到,我可以再次调用重新加载,但您的回答对我有所帮助。但我认为这是我可以通过学习一些 JS 基础知识自己发现的东西。所以,很抱歉问这个“简单”的问题,非常感谢你的回答。
  • 不确定您可能读过什么,但这不是jQuery.ajax 的工作方式。
猜你喜欢
  • 2011-10-26
  • 2021-01-18
  • 1970-01-01
  • 2012-07-31
  • 2016-10-03
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多