首页 > 解决方案 > JS 不自动填充 SharePoint 用户

问题描述

我已经包含了一段似乎没有按照我想要的方式执行的代码。在过去,我已经能够使用它来根据 SharePoint 中的用户名自动填充名称。没有明显的错误,脚本中的其他所有内容都运行良好,而且看起来确实如此,只是没有达到预期的效果。

function getWebUserData() {
        context = new SP.ClientContext.get_current();
        web = context.get_web();
        currentUser = web.get_currentUser();
        currentUser.retrieve();
        context.load(web);
        context.executeQueryAsync(Function.createDelegate(this, this.onSuccessMethod), 
             Function.createDelegate(this, this.onFailureMethod));
}

function onSuccessMethod(sender, args) {
    var userObject = web.get_currentUser();

    $("input[Title='Requester']").val(userObject.get_title());
    $("input[Title='Requester']").attr('disabled','disabled');   
}

标签: javascriptsharepoint

解决方案


下面的代码适用于我的本地 SharePoint 2013。引用的线程

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            function GetCurrentUser() {
                var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/currentuser";
                var requestHeaders = { "accept": "application/json;odata=verbose" };
                $.ajax({
                    url: requestUri,
                    contentType: "application/json;odata=verbose",
                    headers: requestHeaders,
                    success: onSuccess,
                    error: onError
                });
            }
            function onSuccess(data, request) {
                var userName = data.d.LoginName;
                //parse the value.
                userName = userName.toString().split("i:0#.w|")[1];
                SetUserFieldValue("Requester", userName);
            }
            function onError(error) {
                //alert(error);
            }
            function SetUserFieldValue(fieldName, userName) {
                var _PeoplePicker = $("div[title='" + fieldName + "']");
                var _PeoplePickerTopId = _PeoplePicker.attr('id');
                var _PeoplePickerEditer = $("input[title='" + fieldName + "']");
                _PeoplePickerEditer.val(userName);
                var _PeoplePickerOject = SPClientPeoplePicker.SPClientPeoplePickerDict[_PeoplePickerTopId];
                _PeoplePickerOject.AddUnresolvedUserFromEditor(true);
            }
            GetCurrentUser();
        });
    </script>

推荐阅读