重複の可能性:
jQuery:ajax呼び出しが成功した後にデータを返す
そのため、Sharepointサービスを呼び出して、他の場所で使用するためにいくつかの値を返そうとしています。そのためにウィンドウ変数を宣言しようとしています。単純に見えますが、ウィンドウ変数はresponseXML関数の外部では定義されていません。
userName = "";
var soapEnv =
"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:tns='http://schemas.microsoft.com/sharepoint/soap/'> \
<soap:Body> \
<GetUserProfileByName xmlns='http://microsoft.com/webservices/SharePointPortalServer/UserProfileService'> \
<AccountName></AccountName> \
</GetUserProfileByName> \
</soap:Body> \
</soap:Envelope>";
$.ajax({
url: "/_vti_bin/userprofileservice.asmx",
type: "POST",
dataType: "xml",
data: soapEnv,
complete: processResult,
contentType: "text/xml; charset='utf-8'"
});
function processResult(xData, status) {
$(xData.responseXML).find("PropertyData > Name:contains('FirstName')").each(function() {
window.FirstName = $(this).parent().find("Values").text();
});
$(xData.responseXML).find("PropertyData > Name:contains('LastName')").each(function() {
window.LastName = $(this).parent().find("Values").text();
});
}
userName += window.FirstName;
userName += " " + window.LastName;
console.log(userName);