【问题标题】:Saving survey response while redirecting user after clicking finish button in sharepoint单击共享点中的完成按钮后重定向用户时保存调查响应
【发布时间】:2015-12-14 21:09:53
【问题描述】:

我有一个与 sharepoint 2013 相关的问题。我有一个调查。在最后一页,有一个是/否的问题。我想要的是,在单击 Sharepoint 提供的“完成”按钮后,用户应该被重定向到感谢页面。我通过以下代码提供:

$(document).ready(function(){
    if(document.getElementById('ctl00_ctl31_g_78e43776_7d3b_4ab6_9d50_7801d0032f15_c
        window.location = "/SitePages/ThankYouE.aspx";
    }
});

但是,问题是由于重定向而未保存调查响应。当我删除重定向时,保存过程效果很好。

我的问题:如何管理保存调查并在保存后重定向用户?

感谢您的帮助。

谢谢

【问题讨论】:

    标签: javascript sharepoint sharepoint-2013 sharepoint-designer


    【解决方案1】:

    执行此操作的一种方法是向overview.aspx 页面添加一些代码,这样如果用户已经填写了调查表,他就会被重定向到感谢页面。看看下面的代码就是这样做的。

    一些注意事项:

    • 我添加了一些代码来禁用重定向。这对于调试很有用,因为一旦我填写了调查表,就很难再次看到概览页面。为此,我正在检查是否定义了“disableThankYou”查询字符串参数并将其设置为 1,在这种情况下,谢谢重定向逻辑不起作用。 (资源: How to get the value from the GET parameters?)
    • 如果我希望用户在填写调查表后能够再次查看 Overview.aspx 页面,此参数也很有用。例如,我们可以在“感谢您”页面上设置一个按钮,该按钮重定向到“overview.aspx?disableThankYou=1”——这样,如果用户已经填写了调查表并导航到“概览”页面,他首先会被重定向到感谢页面,但可以选择再次转到概览页面。
    • 我还建议您在执行以下代码时隐藏主概览 div(或整个页面?),并且仅在用户未重定向到感谢页面时才显示它。这将使用户体验更好,因为没有它,用户会在重定向到感谢页面之前看到概览页面内容闪烁。

    最后请注意下面代码中的一些// TODOs cmets,您可能想要解决这些问题。

    // TODO: Change this to the name of your survey.
    var listName = 'Test Survey';
    
    // TODO: Hide the Overview DIV or the whole page.
    
    
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', init);
    
    function init()
    {
      var clientContext = new SP.ClientContext.get_current();
        var oWeb = clientContext.get_web();
        var oList = clientContext.get_web().get_lists().getByTitle(listName);
    
        var camlQuery = new SP.CamlQuery();
        var query = "<View><Query><Where>" +
          "<Eq><FieldRef Name='Author' LookupId='TRUE' /><Value Type='Integer'>" + _spPageContextInfo.userId + "</Value></Eq>" +
          "</Where></Query></View>"
        camlQuery.set_viewXml(query);
        this.listItems = oList.getItems(camlQuery);
    
        clientContext.load(this.listItems);
    
        clientContext.executeQueryAsync(Function.createDelegate(this, onItemsLoaded), Function.createDelegate(this, onQueryFailed));        
     }       
    
    function onItemsLoaded(sender, args) 
    {
        if (QueryString.disableThankYou != 1 && this.listItems.get_count() == 1)
        {
          // TODO: Do your redirect here.
            alert('redirecting');
        }
        else
        {
          // TODO: Show the Overview DIV.
          alert('showing div');
        }
    }
    
    function onQueryFailed(sender, args) 
    {
    // Todo handle error
    alert('Error');
    }
    
    
    var QueryString = function () {
      // This function is anonymous, is executed immediately and 
      // the return value is assigned to QueryString!
      var query_string = {};
      var query = window.location.search.substring(1);
      var vars = query.split("&");
      for (var i=0;i<vars.length;i++) {
        var pair = vars[i].split("=");
            // If first entry with this name
        if (typeof query_string[pair[0]] === "undefined") {
          query_string[pair[0]] = decodeURIComponent(pair[1]);
            // If second entry with this name
        } else if (typeof query_string[pair[0]] === "string") {
          var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
          query_string[pair[0]] = arr;
            // If third or later entry with this name
        } else {
          query_string[pair[0]].push(decodeURIComponent(pair[1]));
        }
      } 
        return query_string;
    }();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 2019-04-21
      • 2011-03-11
      • 1970-01-01
      相关资源
      最近更新 更多