2013-08-01 67 views
0

因此,我试图制作一个非常简单的SharePoint应用程序。我只想将已经构建并托管的Web应用程序加载到SharePoint页面标题中。Sharepoint 2013中的外部Ajax调用:访问被拒绝

因此,目标是简单地从备用页面加载Html并将其放置在Sharepoint应用程序的Default.aspx的div中。这与我们将另一个外部项目引入非共享点Web应用程序中的方式完全没有任何困难。

所以,我提出了以下Ajax调用:

$.ajax(
     { 
      type: "GET", 
      url: "http://PageIWantToLoad/default.aspx", 
      dataType: "html", 
      success: function (result) { 
       $("#pageContainer").html(result); 
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       alert("oops"); 
      } 

    }); 

不过,我得到一个访问被拒绝错误。

我检查了一些类似的StackOverflow和其他在线求助请求,但他们似乎都在处理更复杂的系统/情况。

任何帮助,将不胜感激。

回答

1

请考虑这篇文章:http://msdn.microsoft.com/en-us/library/jj164022.aspx。 如果您想从SharePoint发出JavaScript请求,则需要使用Sharepoint跨域库。 我有一个从SharePoint本身请求SharePoint 2013 REST服务的示例。 我使用Script on Demand库和mQuery(SharePoint内置jQuery类比)。 和SP.RequestExecutor - 这是跨域SharePoint库。

SP.SOD.executeFunc('mQuery.js', 'm$', function() { 
m$.ready(function() { 
    SP.SOD.registerSod('sp.requestexecutor.js', 
     '/_layouts/15/sp.requestexecutor.js'); 
    SP.SOD.executeFunc('sp.requestexecutor.js', 
     'SP.RequestExecutor', 
    function() { 
     var targetSiteUrl = "http://mySiteUrl"; 
    var targetUrl = "http://mySiteUrl/_api/web/lists/getByTitle('myListTitle')/items(1)"; 
var re = new SP.RequestExecutor(targetSiteUrl); 
re.executeAsync({ 
    url: targetUrl, 
    headers: { "Accept": "application/json; odata=verbose" }, 
    method: 'GET', 
    success:function(response) { 
     var jsonObject = JSON.parse(response.body); 
      } 
     }); 
    }); 
})}); 

关键是RequestExecutor。 如果您想从外部资源请求SharePoint - 您将需要accessToken。 希望这有助于。

+0

请问您能解释一下mquery – Mihir

+0

@Mihir mQuery - 它是一个内置的SharePoint js库。这就像jQuery,但有一些限制。有一个关于mQuery的博客:http://spdevlab.com/2013/07/01/getting-started-with-mquerym-in-sharepoint-2013-and-sharepoint-online/ –