JSON APIを呼び出すスクリプトファイルがあり、現在のログインユーザー名を呼び出しの一部として送信する必要があります。私は以下を試しました:-
$(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
ただし、次のエラーが発生します。-'HttpContext' is undefined
あなたのスクリプトはHttpContext
と呼ばれるJavascript変数を探していますあなたのコードは
@HttpContext.Current.User.Identity.Name
かみそりで
だからJavaScriptは
var fullurl = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=Kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&[email protected]&packageId=' + name;
また、不足している&
ユーザー名とpackageIdの間(これらを別々の変数にする場合)
編集:コメントに基づいており、これはjsファイル内にあります(これはOPで見逃したと思います)
2つのオプション:
ページ
<script>
var usrName = "@HttpContext.Current.User.Identity.Name";
</script>
JSファイル
....&loginAs='+ usrName + '&packageId=' + name;
オプション2は、ユーザー名をまったく含まず、アクションから取得することです。これは、投稿先のページが同じアプリにある場合の唯一のオプションです
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) {
上記のコードは機能するはずです。JavaScriptのフロントでは、サーバーでのみ使用可能なHTTPContentオブジェクトにアクセスできませんが、サーバーコードに配置すると、同じオブジェクトにアクセスできます。
または、サーバーから設定された値で非表示のコントロールを持つことができます
<input type='hidden' id='uid' runat='server'>
サーバーコードは次のようになります
uid.value = HTTPContext.Current.User.Identity.Name;
User.Identity.Name
はSystem.Web.WebPages.WebPageRenderingBase
(つまり、コードはビューファイルにある必要があります)。スクリプトファイルでサーバー側のコードに直接アクセスすることはできません。
$(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
かみそりを使用してビュー(.cshtml)にJavaScript変数を設定し、それをスクリプトファイル(.js)で使用する必要があります。
だからあなたの見解では:
<script type="text/javascript">
var userName = '@HttpContext.Current.User.Identity.Name';
</script>
そしてあなたのスクリプトファイル
var fullurl = '....loginAs=' + userName + 'packageId=' + name;