ajax post后的location.reload

时间:2014-03-14 00:29:18

标签: javascript jquery ajax

我有一个$ .ajax()调用来执行一些服务器端更新。完成后(在“成功”功能中),我调用location.reload(true)来刷新页面。我确实想要那里的“真实”,因为我确实希望出现新的更改,而不是获取没有它们的页面的缓存版本。这一切都适用于FF(27.0.1)。但是,它在IE 10中不起作用。而且,它在Chrome(33.0.1750.149)中不起作用。 (我在asp.net MVC工作,如果重要的话。)

实际上,没有进行整个ajax调用(即:更新甚至不会发生在服务器上)。当我注释掉这一行时,ajax调用工作正常,但显然没有重新加载。

我在IE 10中尝试了以下所有选项。有些重新加载页面,只是缓存版本。有些打破了整个ajax调用。 window.location.reload(真); - >打破ajax电话 window.location.reload(); - >打破ajax电话 window.location.href = window.location.href - >有效,但重新加载了缓存版本

还有其他想法吗?我甚至愿意做一个完整的ajax / jquery重定向到页面?

这是ajax函数:

function ExecuteFlagAssign() {
.....//some code here...not important....//

     $.ajax({
                type: 'POST',
                url: '/Services/poAJAX.asmx/SetPOInfo',
                data: "{inPOCombinedIDList: \'" + masterItemIDList + "\', inParameters: \'" + JSON.stringify(paramObj) + "\'}",
                dataType: "json",
                contentType: "application/json; charset=utf-8;",
                success: UpdateCompleteFlagAssign(callFrom),
                error: UpdateErrorFlagAssign
            });
    }

    function UpdateCompleteFlagAssign(callFrom) {
        if (callFrom == "po_detail" || callFrom == "so_detail" || callFrom == "so_detail_top") {
            window.location.reload(true);
        }
    }

再加一点(不要认为这很重要,但谁知道):调用javascript的按钮是弹出窗口。但是,它不是一个真正的模态弹出窗口。它实际上只是一个隐藏的div,当它被请求时会得到一个高z-index(所以它出现)。 这个javascript代码全部在主页面上(不是具有弹出显示的局部视图)。

所以,当我注释掉window.location.reload(true)行时,一切正常,ajax调用触发,更新等等,只是没有重新加载。当我不注释掉该行时,页面会重新加载,但是不会触发ajax调用/不会发生更新。 (IE中的开发人员工具没有错误)

有什么想法吗?我真的很困惑。我愿意在这里开展工作......

(我知道一个解决方法是将它作为服务器的完整回发,而不是ajax调用,然后刷新页面。但是,这是一个相当大的工作量。并且,有一些页面调用此不需要刷新的函数...所以在所有情况下使用相同的ajax调用都很好。)

我非常感谢任何人的时间和对此有所帮助!!!

0 个答案:

没有答案