繁体   English   中英

使用SPServices从另一个域上的Sharepoint获取总计列表项

[英]Get total list items from Sharepoint on another domain using SPServices

这是我在Stackoverflow上的第一篇文章。 希望你们能帮助我解决我的问题。 我在domain1.sharepoint.com上有一个HTML页面,我正在尝试使用JQuery + SPServices从domain2.sharepoint.com上的SharePoint获取总列表项。

我了解由于同源策略,我需要使用XMLHttpRequest(CORS)来获取所需的数据。 不幸的是,我不确定如何将XMLHttpRequest放入SPServices。 我已经尝试过,并且收到“未定义”错误。 我对JavaScript非常陌生,感谢所有帮助。

到目前为止,这是我所做的:

$.support.cors = true;
function createCORSRequest(method, refURL) {
  var xhr = new XMLHttpRequest();
  if ("withCredentials" in xhr) {
    xhr.open(method, refURL, true);
  } else if (typeof XDomainRequest != "undefined") {
    xhr = new XDomainRequest();
    xhr.open(method, refURL);
  } else {
    xhr = null;
  }
  return xhr;
}

function makeCorsRequest() {
  var refURL = 'http://domain1.sharepoint.com';
  var spURL = refURL;

  var xhr = createCORSRequest('GET', spURL);
  if (!xhr) {
    alert('CORS not supported');
    return;
  }
  xhr.onload = function() {
    $().SPServices({
        operation: "GetListItems",
        webURL: spURL,
        listName: "Message Log",
        viewName: "{70DFBF9A-5266-4D69-AD01-E848301B51BB}",
        async: false,
        CAMLViewFields: "<ViewFields><FieldRef Name='Status' /></ViewFields>",
        completefunc: function (xData, status) {
            $("#countlist").html($(xData.responseXML).find("z\\:row").length);
        }
    });
};

  xhr.onerror = function(e, jqxhr) {
    alert('Woops, there was an error making the request. ' + jqxhr);
  };

  xhr.send();
}

onload = makeCorsRequest;

我觉得你做得太多了。 这行:

$ .support.cors = true;

启用跨域功能是您唯一需要的命令。 这告诉jQuery启用cors,并负责其余的工作。

设置好之后,可以正常方式调用SPServices,并确保将“ webURL”选项设置为指向domain2。

请注意,尽管这将在“现代”浏览器中运行,但IE(我认为)将提示用户进行许可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM