Получите общие элементы списка из Sharepoint в другом домене с помощью SPServices

это мой первый пост в Stackoverflow. Надеюсь, вы, ребята, можете помочь мне с моей проблемой. У меня есть HTML-страница на domain1.sharepoint.com, и я пытаюсь получить все элементы списка из SharePoint на domain2.sharepoint.com с помощью JQuery+SPServices.

Я понимаю, что из-за политики одного и того же источника мне нужно использовать 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;

person lord_lufias    schedule 01.10.2013    source источник


Ответы (1)


Я думаю, ты слишком много делаешь. Эта строка:

$.support.cors = истина;

Должно быть единственное, что вам нужно, чтобы включить междоменный доступ. Это говорит jQuery включить cors, и он позаботится обо всем остальном.

Как только это установлено, можно вызывать SPServices обычным способом и гарантировать, что вы установите параметр «webURL» для указания на domain2.

Обратите внимание, что хотя это будет работать в «современных» браузерах, IE (я думаю) запросит у пользователя разрешение.

person Paul T.    schedule 02.10.2013