获取可细化字符串的内部ID

时间:2018-10-30 14:53:53

标签: javascript sharepoint sharepoint-2013

我正在建立一个查询,它将使用相关查询信息将用户重定向到搜索页面。我的问题是我知道如何通过地址栏获取refinablestring的内部ID的唯一方法,我需要一种能够通过JavaScript获取内部ID的方法。

当我说内部ID时,我的意思是:

名称:Refinablestring00

内部ID:ǂǂ446f63756d656e7460547970652031

生成(解码)的查询:

/sites/example/pages/Search.aspx#Default={"k":"*","r": 
[{"n":"RefinableString00","t": 
["\"ǂǂ4469736363706c696e652032\""],"o":"and","k":false,"m":null}]}

为了澄清,我希望能够获取内部ID,并且可以访问JSOM /客户端。我有什么选择?

谢谢

1 个答案:

答案 0 :(得分:1)

这不是官方的文档,但是我们开始。 让我们看看如何表示精简过滤器:

{ 
     "k": queryText,    //search query 
     "r": [   //<- the list of refiners
              { 
                  "n": propertyName,   //property value 
                  "t": [token],  //encoded property value (see below for a more details)  
                  "o": "and",    //(or,and) operators
                  "k": false, 
                  "m": null 
              }
      ],
      //another refiners go here.. 
      "l": lcid   //language 
} 

其中token表示已编码的属性值,可以这样生成:

var strToHex = function (value) {
     var hex = unescape(encodeURIComponent(value))
        .split('').map(function(v){
             return v.charCodeAt(0).toString(16)
        }).join('')
     return hex; 
};


//Usage
var propertyValue = "Jon Doe";
var token = "\"ǂǂ" + strToHex(propertyValue) + "\"";
console.log(token);

示例

下面的示例演示了如何生成搜索URL,其中包括具有属性名称DisplayAuthor和值Jon Doe的精简过滤器

function createRefiner(queryText,propertyName, propertyValue,lcid) {
     lcid = lcid || 1033;
     var strToHex = function (value) {
                var hex = unescape(encodeURIComponent(value))
                    .split('').map(function(v){
                         return v.charCodeAt(0).toString(16)
                   }).join('')
                return hex; 
     };
     var token = "\"ǂǂ" + strToHex(propertyValue) + "\"";
     return { 
              "k": queryText, 
              "r": [{ "n": propertyName, "t": [token], "o": "and", "k": false, "m": null }], 
              "l": lcid 
     };
}


//Usage
var refiner = createRefiner("*","DisplayAuthor","Jon Doe");
var queryGroupName = "Default";
var refinerFilter = queryGroupName + '=' + encodeURIComponent(JSON.stringify(refiner));
var pageUrl = "/_layouts/15/osssearchresults.aspx" + '#' + refinerFilter;
console.log(pageUrl);