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

标签 javascript jquery sharepoint cors 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”选项设置为指向域 2。

请注意,虽然这在“现代”浏览器中有效,但 IE(我认为)会提示用户获得许可。

关于javascript - 使用 SPServices 从另一个域上的 Sharepoint 获取总列​​表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19116378/

相关文章:

javascript - 值/选择器中的反斜杠

javascript - 获取一个大字符串中分隔符之间的所有子字符串

sharepoint - 从 Web 部件获取当前 SPWeb

sharepoint - 创建定时器作业的问题

javascript - 正则表达式只允许输入 3 位小数,其中 0.001 是可能的最小数字,而不是 0

javascript - jquery - 当其他 li 扩展时排序 li 位置

javascript - 针对不同浏览器的 JavaScript 中的一般单元测试概念/实践?

javascript - 在 Win7 上,我如何在旧版本的 IE 中进行调试

jquery - 使用 Jquery Animate 调整图像大小

javascript - 使用 CAML/jQuery 将多条记录更新到 Sharepoint(批量更新)