2016-08-05 3 views
2

Diese Frage ist eine Erweiterung dieser, den ich als Ausgangspunkt gefunden (die ohne Sonderzeichen funktioniert): SharePoint REST query SP.UserProfiles.PeopleManagerSharepoint-REST-Abfrage SP.UserProfiles.PeopleManager Sonderzeichen

Grundsätzlich ist das Problem, das ich habe, ist die Abfrage reagiert nicht genau auf accountName mit Sonderzeichen. Speziell ein ' im Nachnamen für dieses Beispiel. Die Abfrage gibt entweder keine Ergebnisse zurück oder ist eine 400 ungültige Anforderung.

Im Codebeispiel habe ich encodeURIComponent() verwendet, aber ich habe auch versucht, escape() und string Escapezeichen "\".

An dieser Stelle nehme ich an, es ist ein Bug auf der MS-Seite, aber ich kann keine Support-Dokumentation finden, noch irgendwelche Beispiele für Code, die dies erfolgreich getan haben.

var siteUrl = _spPageContextInfo.siteAbsoluteUrl; 
var accountName = "Domain\\LoginFirstName_O'AccountLastName"; 
$.ajax({ 
    url: siteUrl + "/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor([email protected])[email protected]='" + encodeURIComponent(accountName) + "'", 
    method: "GET", 
    headers: { "Accept": "application/json; odata=verbose" }, 
    success: function (data) { 

      console.log(data);  

    }, 
    error: function (data) { 
     console.log(JSON.stringify(data)); 
    } 
}); 
+0

Try this: "Domain \\\\ LoginFirstName_O'AccountLastName"; Yup - 4 Backslashes. – sandrooco

+0

@Sandesire Versuchte es, keine Würfel. Auch hier bin ich mir ziemlich sicher, dass das Problem von den, nicht von den 'kommt. – DarkVane

+0

Was passiert, wenn Sie mit einem "normalen" Namen versuchen? – sandrooco

Antwort

0

Offenbar war ich näher an der Antwort als ich dachte, aber ich habe es übersehen. Im Grunde funktionierte in diesem Fall die Art und Weise wie SharePoint entkam. Ich musste Code hinzufügen, um die einzelne ' durch '' zu ersetzen.

Ich fand auch, dass die Anfrage es unabhängig von der encodeURIComponent() codiert, so dass ich für diese eine ich entschied, es zu entfernen. Bis zu Ihnen, wenn Sie es verwenden möchten oder nicht.

Hier ist mein letzter Code-Schnipsel:

var siteUrl = _spPageContextInfo.siteAbsoluteUrl; 
var accountName = "Domain\\LoginFirstName_O'AccountLastName"; 
accountName = accountName.replace("'","''"); 

$.ajax({ 
url: siteUrl + "/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor([email protected])[email protected]='" + accountName + "'", 
method: "GET", 
headers: { "Accept": "application/json; odata=verbose" }, 
success: function (data) { 

     console.log(data);  

}, 
error: function (data) { 
    console.log(JSON.stringify(data)); 
} 
}); 
+0

Gosh, Sharepoint kann so dicky manchmal sein ... – sandrooco