J'ai un fichier script qui appelle l'API JSON et je dois envoyer le nom d'utilisateur de connexion actuel dans le cadre de l'appel. J'ai essayé ce qui suit: -
$(document).ready(function () {
var name = Prompt("Please enter your packageid", "test");
var fullurl = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=Kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=' + HttpContext.Current.User.Identity.Name + 'packageId=' + name;
$.ajax({
type: "GET",
url: fullurl,
dataType: "JSONP",
success: function (result) {
//code goes here
Mais cela provoquera l'erreur suivante: - "HttpContext" n'est pas défini
Votre script recherche un Javascript variable appelée HttpContext
Votre code doit être
@HttpContext.Current.User.Identity.Name
en rasoir
alors le javascript devient
var fullurl = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=Kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&[email protected]&packageId=' + name;
Il vous manque aussi &
entre le nom d'utilisateur et packageId si vous vouliez que ces variables soient distinctes
Edit : basé sur votre commentaire et sur le fait qu'il se trouve à l'intérieur d'un fichier js
Deux options:
Page
<script>
var usrName = "@HttpContext.Current.User.Identity.Name";
</script>
Fichier JS
....&loginAs='+ usrName + '&packageId=' + name;
La deuxième option consiste à ne pas inclure le nom d'utilisateur et à l'obtenir simplement à l'aide de l'Action. Ceci est uniquement une option si la page que vous publiez se trouve sur la même application.
var usrName = '<%[email protected]%>'
$(document).ready(function () {
var name = Prompt("Please enter your packageid", "test");
var fullurl = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=Kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=' + <%= HttpContext.Current.User.Identity.Name %> + 'packageId=' + name;
$.ajax({
type: "GET",
url: fullurl,
dataType: "JSONP",
success: function (result) {
le code ci-dessus devrait fonctionner. Sur le Javascript, vous n’avez pas accès à l’objet HTTPContent qui n’est disponible que sur le serveur, mais si vous les insérez dans un code de serveur, vous devriez pouvoir y accéder.
ou vous pouvez avoir un contrôle caché avec la valeur définie par le serveur
<input type='hidden' id='uid' runat='server'>
le code du serveur ressemblerait à
uid.value = HTTPContext.Current.User.Identity.Name;
Vous pouvez simplement utiliser User.Identity.Name
qui est dérivé de System.Web.WebPages.WebPageRenderingBase
(cela signifie que le code doit être dans un fichier View). Vous ne pouvez pas accéder directement au code côté serveur dans les fichiers de script.
$(document).ready(function () {
var name = Prompt("Please enter your packageid", "test");
var fullurl = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=Kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&[email protected]&packageId=' + name;
$.ajax({
type: "GET",
url: fullurl,
dataType: "JSONP",
success: function (result) {
//code goes here
Vous devrez définir une variable javascript dans votre vue (.cshtml) à l'aide de rasoir, puis l'utiliser dans votre fichier de script (.js)
Donc à votre avis:
<script type="text/javascript">
var userName = '@HttpContext.Current.User.Identity.Name';
</script>
et ensuite votre fichier de script
var fullurl = '....loginAs=' + userName + 'packageId=' + name;