12

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' は未定義です

4

6 に答える 6

20

あなたのスクリプトは、あなたHttpContextコードが

@HttpContext.Current.User.Identity.Name

かみそりで

したがって、JavaScriptは次のようになります

 var fullurl = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=@HttpContext.Current.User.Identity.Name&packageId=' + name;

&ユーザー名とpackageIdを別々の変数にするつもりだった場合、それらの間にも欠落しています

編集:あなたのコメントに基づいており、これはjsファイルの中にあります(OPで見逃したと思います)

2 つのオプション:

  1. スクリプトファイルを呼び出すページの変数内にユーザー名を保持することです。このような:

ページ

<script>
var usrName = "@HttpContext.Current.User.Identity.Name";
</script>

JSファイル

....&loginAs='+ usrName + '&packageId=' + name;

オプション 2 は、ユーザー名をまったく含めずにアクションから取得することです。これは、投稿先のページが同じアプリ上にある場合のみのオプションです

于 2012-10-10T13:14:20.253 に答える
1

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&loginAs=@User.Identity.Name&packageId=' + name;
        $.ajax({
            type: "GET",
            url: fullurl,
            dataType: "JSONP",
            success: function (result) {
//code goes here
于 2012-10-10T13:13:21.300 に答える
1

カミソリを使用してビュー (.cshtml) に javascript 変数を設定し、これをスクリプト ファイル (.js) で使用する必要があります。

だからあなたの見解では:

<script type="text/javascript">    
            var userName = '@HttpContext.Current.User.Identity.Name';            
</script>

そして、スクリプトファイル

   var fullurl = '....loginAs=' + userName  + 'packageId=' + name;
于 2012-10-10T13:13:30.197 に答える
1
$(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;
于 2012-10-10T13:24:12.657 に答える
0

var usrName = '<%=@HttpContext.Current.User.Identity.Name%>'

于 2016-02-12T16:04:59.143 に答える