Требуются ли разрешения для запуска SPServices на Sharepoint?
Мне нужна помощь с Sharepoint. Я пробовал несколько способов извлечения данных из списка, но безуспешно, но после долгих чтений и поисков я все еще впереди.
Я использую список, созданный другим пользователем, из которого я могу добавлять, редактировать и удалять элементы. При вызове этого списка с помощью SPServices я, кажется, ударился о стену. Вот моя третья попытка доступа к списку, и теперь я получил 404
ответ и responsetext
нулевой.
URL-адрес правильный, потому что он действительно загружает список значений.
Если у меня есть пустой параметр webURL, параметр responsetext
имеет полезный ответ SOAP, в котором говорится следующее:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.</faultstring><detail><errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/">
List does not exist.
The page you selected contains a list that does not exist. It may have been deleted by another user.
</errorstring><errorcode xmlns="http://schemas.microsoft.com/sharepoint/soap/">0x82000006</errorcode></detail></soap:Fault></soap:Body></soap:Envelope>
Вот мой вызов, который, когда я определяю webURL для указания на список, он всегда возвращает http 404 с responseText=null
независимо от того, что URL Это не очень полезно. URL, на который я указываю, загружает список.
function getListItems_RFC(){
var url = $().SPServices.SPGetCurrentSite() +
"/_vti_bin/listdata.svc/RFCExtract";
console.log("getListItems_RFC() "+ url);
$().SPServices({
operation: "GetListItems",
webURL: url,
async: false,
listName: "RFC Extract",
CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>",
completefunc:
function (xData, Status) {
console.log(Status); //outputs error
console.log(xData); //outputs array responseText:null and status:404
$(xData.responseXML).SPFilterNode("m:properties").each(function() {
var liHtml = "<li>" + $(this).attr("d:Title") + "</li>";
$("#debug").append(liHtml);
});
}
});
};
Я изменил URL каждый возможный путь:
var url = $().SPServices.SPGetCurrentSite() +
"/_vti_bin/listdata.svc/"; //responseText=null, status:404
var url = $().SPServices.SPGetCurrentSite();//responseText=null, status:404
var url = "" //responseText=soapresponse above, status:500
Почему это не работает??? Что я делаю неправильно???
0 ответов
Можете ли вы изменить свою реализацию на что-то другое?
Ваш путь очень сложен по моему мнению. Сторонние библиотеки здесь не нужны.
Хорошим способом является использование готового API REST или JSOM. Это простой в использовании.
Я вижу, вы хотите получить элемент списка Поле заголовка.
Используйте REST API следующим образом:
http://site/ URL сайта /_api/web/lists/GetByTitle('Test')/items?$select=Title
Здесь вы можете найти пример:
https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/working-with-lists-and-list-items-with-rest
https://www.c-sharpcorner.com/blogs/retrieve-sharepoint-list-items-using-rest-api
Может быть, вы можете использовать для SharePoint 2010:
var myRestApiUrl = _spPageContextInfo.webServerRelativeUrl + "/_vti_bin/ListData.svc/RFCExtract?$select=Title";
var get = function (url) {
return jQuery.ajax({
url: url,
type: "GET",
processData: false,
headers: {
Accept: "application/json;odata=verbose",
}
});
};
get(myRestApiUrl)
.then(function(response){
// TODO: do actions with response
});