Javascript SharePoint是否获取当前用户帐户名?

Javascript SharePoint是否获取当前用户帐户名?,javascript,ajax,sharepoint,soap,sharepoint-2010,Javascript,Ajax,Sharepoint,Soap,Sharepoint 2010,SharePoint 2010是否将当前用户的accountname存储在全局可访问的JS对象中 我能找到的每一个解决方案都涉及到ajax web服务调用的一些变体,而这似乎是一个非常繁重的解决方案,用于访问应该是一个微不足道的信息 我可以轻松访问的内容: 从\uu spUserId 通过删除功能区的html(例如:$(“#zz17_菜单”).text()获取当前用户名。) 但这两个都不是帐户名 我不愿做的事情: 通过对GetUserProfileByName的SOAP调用获取当前用户信息

SharePoint 2010是否将当前用户的accountname存储在全局可访问的JS对象中

我能找到的每一个解决方案都涉及到ajax web服务调用的一些变体,而这似乎是一个非常繁重的解决方案,用于访问应该是一个微不足道的信息

我可以轻松访问的内容:

  • \uu spUserId
  • 通过删除功能区的html(例如:
    $(“#zz17_菜单”).text()获取当前用户名。
但这两个都不是帐户名

我不愿做的事情:

  • 通过对GetUserProfileByName的SOAP调用获取当前用户信息
  • 通过对../\u layouts/userdisp.aspx进行Ajax调用来获取当前用户信息

您确实需要进行web服务调用才能可靠地执行此操作。谢天谢地,SPServices使这样做既快捷又无痛

$%28%29.SPServices.SPGetCurrentUser

$().SPServices.SPGetCurrentUser({
    fieldName: "Name",
    debug: false
});

对于任何一个偶然发现这一点的人,一年后我找到了方法

到你的母版页(如果你正在使用Randy Drisgill的母版页,它已经在那里了)


然后,在您想要访问属性(例如:UserName)之前,拉入数据

<SPSWC:ProfilePropertyLoader runat="server"/>

接下来,访问其中一个属性,我建议使用TitleMode将其嵌入
元素中

<script>
  var username = '<SPSWC:ProfilePropertyValue PropertyName="UserName" TitleMode="true" runat="server"/>';
</script>

var用户名=“”;

如图所示,我们现在使用它来填充一个全局文件,其中包含一些属性,如名字、姓氏、用户名、配置文件图片、状态。

不幸的是,“快速无痛”对我来说并不意味着我的应用程序快速无痛。SPServices使用了我提到的第二种方法,它带来了../_layouts/userdisp.aspx的完整副本,在我的环境中,它是22KB的数据,需要花费一秒钟的时间来检索,然后让jQuery将整个响应初始化为一个文档片段,最后深入获取您的信息。这类似于我在建房子,然后等着你在邮箱上写下你的名字。如果你的目标是提高性能,那么我建议写一个定制的REST服务,它接受用户id并返回用户名。这样,所有繁重的工作都可以在服务器端完成。这是一个好主意,也是一个替代对SharePoint services进行异步调用的好方法。对于angular也可以很好地工作,因为您可以在应用程序引导时使用用户数据定义角度值,而不是使用angular服务“延迟加载”用户信息。
<script>
  var username = '<SPSWC:ProfilePropertyValue PropertyName="UserName" TitleMode="true" runat="server"/>';
</script>