我正在创建一个简单的网站,我必须将一些数据保存到sharepoint列表中。我只使用html css js。我需要对Sharepoint API进行REST调用以在SP上发布数据。我试图从我的列表中获取数据(在SP中),如下所示:
$(document).ready(function() {
processListItems(hostweburl, 'ListName');
});
function processListItems(url, listname) {
$.ajax({
url: url + "/_api/web/lists/getbytitle('" + listname + "')",
method: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function(data) {
console.log(data);
},
error: function(data) {
console.log(data);
}
});
}
它返回此响应:
"{"error":{"code":"-2147024891, System.UnauthorizedAccessException","message":{"lang":"en-US","value":"Access denied. You do not have permission to perform this action or access this resource."}}}"
我只引用了两个脚本:
<script src="js/jquery-3.1.1.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js" type="text/javascript"></script>
它说我未经授权访问。虽然我对我的列表拥有管理员权限。请告诉我如何解决这个问题。我是否需要任何授权标头来调用Rest Api的ajax?我是Sharepoint的新手。请帮助!
答案 0 :(得分:0)
我认为默认情况下在SPOnline中禁用自定义脚本。您可能必须启用它。这些链接可能有所帮助:
Access denied office 365 / SharePoint online with Global Admin account
http://vamsi-sharepointhandbook.blogspot.com/2015/07/turn-scripting-capabilities-on-or-off.html
答案 1 :(得分:0)
当您尝试从列表中提取项目时,请指定项目之前的URL。请参阅以下行语法 -
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('"+listName+"')/items",
// Rest of the code
});
答案 2 :(得分:0)
是的,您需要一个授权标头来处理您的请求。所以您的标题应该是这样的:
headers: {
"Accept": "application/json; odata=verbose",
"Authorization": 'Bearer '+ **access_token**
}
access_token:您需要获取访问令牌才能发出请求。您可以使用Microsoft提供的adal library。