Требуются ли разрешения для запуска SPServices на Sharepoint? - PullRequest
0 голосов
/ 30 ноября 2018

Мне нужна помощь с 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

Почему это не работает ???Что я делаю не так ???

1 Ответ

0 голосов
/ 05 декабря 2018

Можете ли вы изменить свою реализацию на что-то другое?Ваш путь очень сложен по моему мнению.Сторонние библиотеки здесь не нужны.Хорошим способом является использование готового 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

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...