2010-02-03 6 views
3

Je vous appelle un service Web SharePoint (Webs.asmx) avec JQuery pour obtenir une liste de tous les sous-sites:problème d'authentification avec JQuery et SharePoint Web Service

$(document).ready(function() { 
     var hrefParts = window.location.href.split('/'); 
     var wsURL = ""; 
     for (i = 0; i < (hrefParts.length - 2); i++) { 
      if (i > 0) 
       wsURL += "/"; 
      wsURL += hrefParts[i]; 
     } 
     wsURL += "/_vti_bin/Webs.asmx"; 
     var soapEnv = 
      "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \ 
       <soapenv:Body> \ 
        <GetAllSubWebCollection xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \ 
        </GetAllSubWebCollection > \ 
       </soapenv:Body> \ 
      </soapenv:Envelope>"; 

     $.ajax({ 
      url: wsURL,  
      beforeSend: function (xhr) { 
xhr.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/GetAllSubWebCollection"); 
}, 
      type: "POST", 
      dataType: "xml", 
      data: soapEnv, 
      complete: processResult, 
      error:function(xhr,err){ 
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); 
    alert("responseText: "+xhr.responseText); 
}, 
      contentType: "text/xml; charset=\"utf-8\"" 
     }); 

    }); 

    function processResult(xData, status) { 
     ... 
    } 

Cependant, je reçois toujours un problème de connexion en raison à l'appel avantEnvoyer. Si je commente, je reçois une page d'erreur "Accès refusé" de SharePoint. J'ai un accès "Contrôle total" au site et à tous les sous-sites. L'appel d'un service Web différent (par exemple, l'appel de GetListCollection à partir de lists.asmx) a réussi.

Quel pourrait être le problème ici?

+0

Quelques questions: Où se trouve la page contenant le javascript? Dans une bibliothèque de documents quelque part? Le problème de connexion est-il une erreur 401 non autorisée? –

+0

Il se trouve dans une bibliothèque "Pages". Problème résolu maintenant comme indiqué à la réponse ci-dessous. – Modery

Répondre

3

Cette opération nécessite un accès Administrateur de Site Collection, même le contrôle total n'est pas suffisant.

Vous aurez probablement besoin de parcourir à la place GetWebCollection ou de créer une page proxy qui s'exécute avec des privilèges élevés et renvoie la réponse webservice.

+0

Merci beaucoup, ça m'a aidé! – Modery

Questions connexes