Jquery(Ajax) 调用 SharePoint 2013 Search Rest API 并使用Josn反回结果并简单显示

Jquery(Ajax) 调用 SharePoint 2013 Search Rest API 并使用Josn反回结果并简单显示

2013年01月05日 21:51:43 天涯海角 阅读数 4970 文章标签: Josn反回结果并简单显示JqueryAjaxPostQuerySearch Rest APISharePoint 2013 更多

分类专栏: SharePoint JavaScript

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/farawayplace613/article/details/8470834

Jquery(Ajax) 调用 SharePoint 2013 Search Rest API 并使用Josn反回结果并简单显示:

SharePoint 2010 中使用的 search.asmxSOAPwebservice在SharePoint 2013中已经被标记为过期, 但为了和老版本的Solution兼容还是可以用的。

而替代search.asmx的技术为SharePoint 2013 Search Rest API:

http://blogs.msdn.com/b/nadeemis/archive/2012/08/24/sharepoint-2013-search-rest-api.aspx

主要用于三方系统需要集成SharePoint 的 Enterprise Search 功能:


query


http://host/site/_api/search/query


使用Get方式取得查询结果,URL长度有限制


postquery


http://host/site/_api/search/postquery


使用Post方式取得查询结果,可以克服URL长度有限制


suggest


http://host/site/_api/search/suggest


使用Get 方式取得search suggestion(搜索建议)

本文将展示用Jquery(Ajax) 调用 SharePoint 2013 Search Rest API 并使用Josn反回结果并简单显示的代码:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  2.  

    <html xmlns="http://www.w3.org/1999/xhtml" >

  3.  

    <head>

  4.  

    <title>Untitled Page</title>

  5.  

    <script type="text/javascript" language="javascript" src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.8.0.js"></script>

  6.  

    <script type="text/javascript" language="javascript">

  7.  

    function StartSearch() {

  8.  

    resultDiv.style.dispaly = "none";

  9.  

    $("#resultTable").empty();

  10.  

  11.  

    // 显示Loading data 图片

  12.  

    loadingDataDiv.style.display = "block";

  13.  

  14.  

    // 在搜索之前先要取到X-RequestDigest, 并使用Ajax request的Header 传到服务器端,如果没有X-RequestDigest 会出现 403 错误

  15.  

    $.ajax(

  16.  

    {

  17.  

    url: "http://host/_api/contextinfo",

  18.  

    type: "Post",

  19.  

    dataType: "xml",

  20.  

    contentType: "text/xml; charset=\"utf-8\"",

  21.  

    complete: ProcessDigest

  22.  

    });

  23.  

    }

  24.  

  25.  

    var loadingDataDiv;

  26.  

    var resultDiv;

  27.  

    $(document).ready(function () {

  28.  

    loadingDataDiv = $("#dataloadingDiv")[0];

  29.  

    resultDiv = $("#searchResultDiv")[0];

  30.  

  31.  

    // 开始要隐藏 Loading data 图片

  32.  

    loadingDataDiv.style.display = "none";

  33.  

    resultDiv.style.dispaly = "none";

  34.  

  35.  

    // 注意该句不加时,若Ajax跨站点访问会出现 “No Transport” error

  36.  

    jQuery.support.cors = true;

  37.  

    });

  38.  

  39.  

    // 处理http://host/_api/contextinfo 返回的结果(提取X-RequestDigest 并发送搜索请求至 SharePoint Search Rest API)

  40.  

    function ProcessDigest(xData, status) {

  41.  

    if (xData.status == 200) {

  42.  

  43.  

    // Use the $.parseXML throw out unsupported pseudo, so use the beetleheaded way

  44.  

    // var xmlDoc = $.parseXML(xData.responseText.replace("d:", ""));

  45.  

    // $xml = $(xmlDoc);

  46.  

    // var xRequestDigest = $xml.find("FormDigestValue").text();

  47.  

  48.  

    var xRequestDigest = xData.responseText.SubStringBetween("<d:FormDigestValue>", "</d:FormDigestValue>");

  49.  

  50.  

    // 取用户输入搜索字符串

  51.  

    var queryText = $("#SearchText")[0].value;

  52.  

  53.  

    // 发送搜索请求至 SharePoint Search Rest API

  54.  

    $.ajax(

  55.  

    {

  56.  

    url: "http://host/_api/search/postquery",

  57.  

    type: "Post",

  58.  

    dataType: "application/json;odata=verbose",

  59.  

    data: JSON.stringify({

  60.  

    ‘request‘: {

  61.  

    ‘Querytext‘: queryText,

  62.  

    ‘StartRow‘: 1,

  63.  

    ‘RowLimit‘: 8,

  64.  

    ‘SelectProperties‘: {

  65.  

    ‘results‘: [‘Title‘, ‘ContentSource‘, ‘DisplayAuthor‘, ‘Path‘]

  66.  

    },

  67.  

    ‘TrimDuplicates‘: true,

  68.  

    ‘Refiners‘: ‘companies,contentclass,FileType(filter=6/0/*)‘,

  69.  

    ‘RefinementFilters‘: { ‘results‘: [‘filetype:equals("docx")‘] }

  70.  

    }

  71.  

    }),

  72.  

    headers: {

  73.  

    "accept": "application/json;odata=verbose",

  74.  

    "content-type": "application/json;odata=verbose",

  75.  

    "X-RequestDigest": xRequestDigest

  76.  

    },

  77.  

    complete: ProcessSearchResult

  78.  

    });

  79.  

  80.  

    }

  81.  

    else {

  82.  

  83.  

    alert(status + xData.responseText);

  84.  

    loadingDataDiv.style.display = "none";

  85.  

    }

  86.  

    }

  87.  

  88.  

    // 处理Search Rest API返回的数据,将其转换成 Josn对象并显示在表格中

  89.  

    function ProcessSearchResult(xData, status) {

  90.  

    if (xData.status == 200) {

  91.  

  92.  

    // 隐藏 Loading data 图片

  93.  

    loadingDataDiv.style.display = "none";

  94.  

  95.  

    // 将搜索结果转换成 Josn对象

  96.  

    var josnData = $.parseJSON(xData.responseText);

  97.  

  98.  

    // 清空表格内容

  99.  

    $("#resultTable").empty();

  100.  

    var row = "<tr><td>Title</td><td>ContentSource</td><td>DisplayAuthor</td><td>Path</td></tr>";

  101.  

    $(‘#resultTable‘).append(row);

  102.  

  103.  

    // 遍历搜索结果并逐条插入表格

  104.  

    $.each(josnData.d.postquery.PrimaryQueryResult.RelevantResults.Table.Rows.results, function () {

  105.  

  106.  

    var title;

  107.  

    var contentSource;

  108.  

    var displayAuthor;

  109.  

    var path

  110.  

    $.each(this.Cells.results, function () {

  111.  

    if (this.Key == "Title")

  112.  

    title = this.Value;

  113.  

  114.  

    if (this.Key == "ContentSource")

  115.  

    contentSource = this.Value;

  116.  

  117.  

    if (this.Key == "DisplayAuthor")

  118.  

    displayAuthor = this.Value;

  119.  

  120.  

    if (this.Key == "Path")

  121.  

    path = this.Value;

  122.  

    });

  123.  

  124.  

    row = ‘<tr><td>‘ + title + ‘</td><td>‘ + contentSource + ‘</td><td>‘ + displayAuthor + ‘</td><td>‘ + path + ‘</td></tr>‘;

  125.  

    $(‘#resultTable‘).append(row);

  126.  

    });

  127.  

  128.  

    // 显示搜索结果

  129.  

    resultDiv.style.dispaly = "block";

  130.  

    }

  131.  

    else {

  132.  

    alert(status + xData.responseText);

  133.  

    loadingDataDiv.style.display = "none";

  134.  

    }

  135.  

    }

  136.  

  137.  

    // String 方法扩展, 由于$.ParseXML方法报错unsupported pseudo,所以采用分割字符串的笨方法来取FormDigestValue的值

  138.  

    String.prototype.SubStringBetween = function (prefix, suffix) {

  139.  

    var strArray = this.split(prefix);

  140.  

    var strArray1 = strArray[1].toString().split(suffix);

  141.  

    return strArray1[0];

  142.  

    };

  143.  

    </script>

  144.  

    </head>

  145.  

    <body>

  146.  

    <div id="inputDiv" >

  147.  

    <input id="SearchText" type="text"/>

  148.  

    <input id="Search" type="button" value="button" οnclick="StartSearch()" />

  149.  

    </div>

  150.  

  151.  

    <div id="dataloadingDiv" >

  152.  

    <img src="Loading3.gif" />

  153.  

    </div>

  154.  

    <div id="searchResultDiv">

  155.  

    <table id="resultTable" border="1">

  156.  

  157.  

    </table>

  158.  

    </div>

  159.  

    </body>

  160.  

    </html>

原文地址:https://www.cnblogs.com/xdanny/p/11456770.html

时间: 2024-10-03 04:28:56

Jquery(Ajax) 调用 SharePoint 2013 Search Rest API 并使用Josn反回结果并简单显示的相关文章

SharePoint 2013 Search REST API 使用示例

原文:SharePoint 2013 Search REST API 使用示例 前言:在SharePoint2013中,提供Search REST service搜索服务,你可以在自己的客户端搜索方法或者移动应用程序中使用,该服务支持REST web request.你可以使用KeyWord Query Language(KQL)或者FAST Query Language(FQL)来对Search REST Service进行搜索查询,并且,试用与远程客户端应用程序.移动应用程序和其他应用程序.

SharePoint 2013 Search 配置总结

原文:SharePoint 2013 Search 配置总结 前言:SharePoint 2013集成了Fast搜索以后,搜索的配置有了些许改变,自己在配置过程中,也记录下了一些入门的东西,希望能够对大家有所帮助. 1.配置搜索服务,首先需要启用搜索功能,基本思路就是新建搜索应用程序,创建内容源,完全爬网,可参考如下博文: SharePoint 2013 配置启用搜索服务 2.由于SharePoint 2013的搜索功能,集成了Fast搜索以后,对于服务器的要求非常高,所以很多情况下,尤其开发机

Jquery ajax调用webservice总结

jquery ajax调用webservice(C#)要注意的几个事项: 1.web.config里需要配置2个地方 <httpHandlers>      <remove verb="*" path="*.asmx"/>      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script

jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法

1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是"application/json", (3)data传递的数据必须是严格的json数据,如"{'a':'aa','b':'bb'}",而且参数必须和静态方法的参数一 一对应 (4)aspx的后台方法返回的数据默认形式是"{'d':'返回的内容'}",所

Jquery Ajax 调用 WebService

原文:http://www.cnblogs.com/andiki/archive/2010/05/17/1737254.html jquery ajax调用webservice(C#)要注意的几个事项: 1.web.config里需要配置2个地方 <httpHandlers>       <remove verb="*" path="*.asmx"/>       <add verb="*" path="*

Jquery Ajax调用aspx页面方法

原文:Jquery Ajax调用aspx页面方法 在asp.net webform开发中,用jQuery ajax传值一般有几种玩法 1)普通玩法:通过一般处理程序ashx进行处理: 2)高级玩法:通过aspx.cs中的静态方法+WebMethod进行处理: 3)文艺玩法:通过WCF进行处理. 第一种和第三种方法不在本文介绍范围之内,下面重点介绍第二种方法. 说明 在我们的印象里 asp.net的Web服务是以.asmx来结尾的,而我们现在的asp.net也能实现Web服务,这是因为默认Web.

SharePoint 2013 Search Keyword Query Class

原文地址 SharePoint 2013 Search Keyword Query Class 本文由SPFarmer翻译 在过去旧版本的SharePoint中,我已经写过一些关于如何使用搜索的文章,在这些文章当中,如何使用 KeywordQuery类是比较火的(2010和 2007). 发扬这个传统,我很骄傲的发布如何使用KeywordQuery 类的SharePoint 2013版本. 好消息是,你以前的旧代码应该还可以工作,快消失是,这些就得类和方法都被标记为废弃了.事实上,我在大量的文档

jquery ajax调用返回json格式数据处理

Ajax请求默认的都是异步的 如果想同步 async设置为false就可以(默认是true) var html = $.ajax({ url: "some.php", async: false }).responseText; 返回json数组取条数用result.length <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs"

配置SharePoint 2013 Search 拓扑结构

在单台服务器上安装了 SharePoint Server 2013,并且创建了具有默认搜索拓扑的 Search Service 应用程序.在默认搜索拓扑中,所有搜索组件都位于承载管理中心的服务器上.SharePoint 2013中的搜索具备了非常强大的功能,但所消耗的资源也是巨大的.所以,在具备硬件条件下,合理的规划SharePoint 2013搜索拓扑结构是非常有必要的. 要规划搜索的拓扑结构,那么有必要先了解SharePoint Farm的拓扑结构. SharePoint 2013 Farm