在sharepoint中单击完成按钮后重定向用户时保存调查响应

时间:2015-09-17 20:54:29

标签: javascript sharepoint sharepoint-2013 sharepoint-designer

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

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

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

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

我感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是向overview.aspx页面添加一些代码,以便用户在已填写调查时重定向到感谢页面。看看下面的代码就是这么做的。

一些注意事项:

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

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

// 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;
}();