【问题标题】:Do I require permissions to run SPServices on Sharepoint?我是否需要权限才能在 Sharepoint 上运行 SPServices?
【发布时间】:2018-12-05 22:42:19
【问题描述】:

我需要 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 定义为指向列表时,无论 URL 是什么,它总是返回带有 responseText=null 的 http 404。这不是很有帮助。我指向的 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);
                  });
               } 
       });
};

我已经以各种可能的方式修改了网址:

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

为什么这不起作用???我做错了什么???

【问题讨论】:

    标签: sharepoint permissions sharepoint-2010 spservices


    【解决方案1】:

    你能把你的实现改成其他的吗?
    我认为你的方式非常复杂。这里不需要第三方库。
    好的方法是使用开箱即用的 REST API 或 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
    
    });
    

    【讨论】:

    • 我相信您提供的网址是针对不同版本的 SharePoint,它 reutnrs 是 http 404。我已经尝试了多种方法。我成功了,但没有成功。只是在寻找潜在的解决方案。我实际上成功地使用了 REST API。 :)
    • 请在浏览器 url 中打开:https:///sites//_vti_bin/ListData.svc。在这里您可以找到所有列表名称。可能是您的列表名称具有不同的名称,没有空格或其他内容。我手头没有 SP 2010,但我认为它与 SP 2013 应该没有太大区别。我创建了列表“RFC Extract”和 url “_vti_bin/ListData.svc/RFCExtract”在浏览器中返回正确的数据。
    • 我不相信它不起作用。如果您可以在浏览器中打开目标链接,则 SPServices 调用设置中存在问题。尝试在浏览器中使用所有参数构建 url。当它工作时,然后将其包装在 js 中。这个 API 必须工作得很好。我个人认为
    • 是的,您提到的最后一个 URL 与我正在使用的 URL 匹配。我已经成功使用 REST API,但这个问题是关于 SPServices 的。由于我成功使用了 REST API,因此我更想了解更多有关此内容的信息。 :)
    • 你可以使用纯 jquery ajax 调用吗?喜欢 $.ajax 吗?喜欢这里:blog.vgrem.com/2014/03/22/…。 ?并使用 /_vti_bin/ListData.svc/RFCExtract?$select=Title url。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多