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?
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? –
Il se trouve dans une bibliothèque "Pages". Problème résolu maintenant comme indiqué à la réponse ci-dessous. – Modery