如何在ajax成功中调用location.reload()后显示隐藏的字段值

时间:2017-07-20 12:10:11

标签: javascript jquery model-view-controller

在调用location.reload()后显示隐藏的字段值。

var ajaxRequest = $.ajax({
            type: "POST",
                url: "my url",//locating to another project action method which is already deployed and running in server
            contentType: false,
            processData: false,
            data: data
        });     
ajaxRequest.done(function (xhr, textStatus) {

            location.reload();//reloading page
            $('#imageUploadScs').show();//displaying hidden field after reloading page

        });

1 个答案:

答案 0 :(得分:1)

重新加载时,页面重新加载。因此,您对页面状态所做的任何更改都将丢失。

所以你有两个选择:

  1. 不要重装。这是首选方案。您已经在使用AJAX,只需根据需要更新页面状态即可。你根本不需要重装。
  2. 在重新加载之前,在某处保留一些标志(本地存储?cookie?这种性质的东西),表示应该显示该字段。在页面的启动代码中(你使用的是jQuery,所以我假设document.ready处理程序在这里是标准的)检查该标志并显示该字段。
  3. 第一种选择当然是首选。但第二个选项可能结构看起来像这样:

    $(function () {
        var shouldShowField = getPersistedFlag();
        if (shouldShowField) {
            $('#imageUploadScs').show();
        }
    });
    
    // elsewhere...
    ajaxRequest.done(function (xhr, textStatus) {
        setPersistedFlag();
        location.reload();
    });
    

    getPersistedFlagsetPersistedFlag的实现将如上所述。他们会读取和写入您想要保留的任何数据到您选择的任何存储机制。 (其中任何一个都有很多例子。)

    如果这似乎过于复杂,那么你可能是对的。这就是首选不首先重新加载页面的原因。