0

ユーザー資格情報の JSON オブジェクトを作成する C# のメソッドがあります。以下はCSファイルです。

public string CreateLoginjson(string strErrorType, bool blIsAuthenticated)
{
    StringBuilder sbLoginJson = new StringBuilder();
    if (blIsAuthenticated)
    {
        sbLoginJson.Append("{LoginSuccess:1");
    }
    else
    {
        sbLoginJson.Append("{LoginSuccess:0");
    }

    if (strErrorType != string.Empty)
    {
        if (strErrorType.TrimEnd(new char[] { ',' }) == "Token" ||
                strErrorType.TrimEnd(new char[] { ',' }) == "BlankToken")
        {
            sbLoginJson.Append(",txtTestTokenNumber1:\"Error\"");
            sbLoginJson.Append(",txtTestTokenNumber2:\"Error\"");
            sbLoginJson.Append(",txtTestTokenNumber3:\"Error\"");
            sbLoginJson.Append(",txtTestTokenNumber4:\"Error\"");

        }


        if (strErrorType.TrimEnd(new char[] { ',' }) == "Password")
        {
            sbLoginJson.Append(",txtPassword:\"Error\"");

        }

        if (strErrorType.TrimEnd(new char[] { ',' }) == "UserName")
        {
            sbLoginJson.Append(",UserName:\"Error\"");

        }
        string strLoadErrorControlMessage = LoadErrorControl(strErrorType,
                string.Empty);

        if (strLoadErrorControlMessage!= string.Empty)
        {
            sbLoginJson.Append(",ErrorMessage:
            '" + strLoadErrorControlMessage + "'");
        }
    }
    sbLoginJson.Append("}");

    var LoginJson = sbLoginJson.ToString();
    return LoginJson;
}

ここで、不正な資格情報が提供されているかどうかをチェックする JS 関数に LoginJson を渡す必要があります。この関数はコントロールを見つけて、JS に属性を追加します

function GetLoginJson(strLoginJson) {
    if (strLoginJson != '' && strLoginJson != undefined) {
        var objLoginJson = strLoginJson;

        if (objLoginJson.LoginSuccess == "1") {

        }
        else if (objLoginJson.LoginSuccess == "0") {

            if (objLoginJson.txtUserName != '' 
                 && objLoginJson.txtUserName != undefined) 
            {
                $('#txtUserName').attr("class", objLoginJson.txtUserName);
            }
            else 
            {
                $('#txtUserName').attr("class", "Input");
            }

            if (objLoginJson.txtPassword != '' 
                 && objLoginJson.txtPassword != undefined) 
            {
               $('#txtPassword').attr("class", objLoginJson.txtPassword);
            }
            else 
            {
                $('#txtPassword').attr("class", "Input");
            }
            if (objLoginJson.txtTestTokenNumber1 != '' 
                  && objLoginJson.txtTestTokenNumber1 != undefined) 
            {
                $('#txtTestTokenNumber1').attr("class", 
                                                objLoginJson.txtTestTokenNumber1);
            }
            else 
            {
                $('#txtTestTokenNumber1').attr("class", "Error");
            }
            if (objLoginJson.txtTestTokenNumber2 != '' 
                  && objLoginJson.txtTestTokenNumber2 != undefined) 
            {
               $('#txtTestTokenNumber2').attr("class", 
                                               objLoginJson.txtTestTokenNumber2);
            }
            else 
            {
                $('#txtTestTokenNumber2').attr("class", "Error");
            }

            if (objLoginJson.txtTestTokenNumber3 != '' && 
                 objLoginJson.txtTestTokenNumber3 != undefined) {
                $('#txtTestTokenNumber3').attr("class", 
                                                objLoginJson.txtTestTokenNumber3);
            }
            else 
            {
                $('#txtTestTokenNumber3').attr("class", "Error");
            }
            if (objLoginJson.txtTestTokenNumber4 != '' && 
                  objLoginJson.txtTestTokenNumber4 != undefined) {
                $('#txtTestTokenNumber4').attr("class", 
                                                objLoginJson.txtTestTokenNumber4);
            }
            else 
            {
                $('#txtTestTokenNumber4').attr("class", "Error");
            }

            $('#ErrorControl').html('');

        }
    }
}

CS からこの jQuery ステートメント `$('#ErrorControl').html('');' に JSON 変数を渡したい

ありがとう

4

4 に答える 4

0

私は最終的に書きました:CSファイルとして

public string CreateLoginjson(string strErrorType, bool blIsAuthenticated)
{
    StringBuilder sbLoginJson = new StringBuilder();
    if (blIsAuthenticated)
    {
        sbLoginJson.Append("{LoginSuccess:1");
    }
    else
    {
        sbLoginJson.Append("{LoginSuccess:0");
    }

    if (strErrorType != string.Empty)
    {
        if (strErrorType.TrimEnd(new char[] { ',' }) == "Token" || strErrorType.TrimEnd(new char[] { ',' }).Split(new char[] { ',' }).Contains("BlankToken"))
        {
            sbLoginJson.Append(",txtTestTokenNumber1:\"Error\"");
            sbLoginJson.Append(",txtTestTokenNumber2:\"Error\"");
            sbLoginJson.Append(",txtTestTokenNumber3:\"Error\"");
            sbLoginJson.Append(",txtTestTokenNumber4:\"Error\"");

        }

        if (strErrorType.TrimEnd(new char[] { ',' }) == "Password" ||  strErrorType.TrimEnd(new char[] { ',' }).Split(new char[] { ',' }).Contains("BlankPassword"))
        {
            sbLoginJson.Append(",txtPassword:\"Error\"");

        }

        if (strErrorType.TrimEnd(new char[] { ',' }) == "UserName" ||  strErrorType.TrimEnd(new char[] { ',' }).Split(new char[] { ',' }).Contains("BlankUserName"))
        {
            sbLoginJson.Append(",txtUserName:\"Error\"");
        }

        string strLoadErrorControlMessage = LoadErrorControl(strErrorType, string.Empty);

        if (strLoadErrorControlMessage != string.Empty)
        {
            PageTestApplicationLogin objPageTestApplicationLogin = new PageTestApplicationLogin(objClientConfiguration);
            sbLoginJson.Append(",ErrorMessage:'" + objPageTestApplicationLogin.GetTestApplicationLoginErrorHtml("", strLoadErrorControlMessage).Replace("'", "\"") + "'");
        }
        sbLoginJson.Append("}");
    }
    var LoginJson = sbLoginJson.ToString();
    return LoginJson;
}

JS ファイル:

if (objLoginJson.ErrorMessage != '' && objLoginJson.ErrorMessage != undefined) {
    $('#ErrorControl').html(objLoginJson.ErrorMessage);
    $('#ErrorControl').find('#tblLoginError').css('display', 'block');
}
else {
    $('#ErrorControl').html("");
    $('#ErrorControl').find('#tblLoginError').css('display', 'none');
}

あなたの提案をありがとう..乾杯....

于 2012-08-23T12:57:38.370 に答える
0

まず、JavaScriptSerializer (リンクをチェック) を試して、任意のオブジェクトを JSON にシリアル化し、クライアントに文字列応答を送信できます。

サーバーとクライアント間の通信には、Web サービス (fe) を呼び出す jquery の ajax 呼び出しを使用できます。または、ASP.NET サイトまたはアプリケーションを構築する場合は、PageMethodsを使用して JavaScript から直接呼び出すことができます。

PageMethods オプションに興味がある場合は、非常に優れた簡単なチュートリアルをご覧ください。

于 2012-08-23T06:05:42.857 に答える
0

ユーザーがすべての情報を提供し、何か (任意のコントロール) をクリックすると、jquery から ajax リクエストを行うことができます。CS から何らかのエラー メッセージが返された場合は、そのメッセージを次のように直接使用できます。

$('#ErrorControl').html(response.d)

d = "CS から再実行する文字列".

ここで、response は成功関数のパラメーターです。d は、受け取ったオブジェクトのデフォルトのプロパティ (変数) です。

文字列を直接表示したくない場合は、返されたデータを使用して別の JavaScript 関数を呼び出します。

ありがとう

于 2012-08-23T05:47:49.740 に答える
0

ユーザー1502890、

サーバ側

C# についてはよくわかりませんが、JSON 文字列を直接作成しようとしているようです。オブジェクトを構築し、それを組み込み言語コマンドまたはユーティリティ メソッドを使用して JSON に文字列化する方が、はるかに普通です (そして、より簡単で信頼性が高くなります)。これはC#で可能に違いないと思います。

クライアント側

資格情報フィールドがフォーム内にid="credentialsForm"あり、サーバー側スクリプトが相対 URL "myCredentialsChecker.xtn" として要求可能であると仮定すると、jQuery は次のようになります。

$(function() {
    function loginResponse(j) {
        j = j || {};
        if (j.LoginSuccess) {
            //...
        }
        else {
            $('#txtUserName').attr("class", j.txtUserName ? j.txtUserName : "Input");
            $('#txtPassword').attr("class", j.txtPassword ? j.txtPassword : "Input");
            $('#txtTestTokenNumber1').attr("class", j.txtTestTokenNumber1 ? j.txtTestTokenNumber1 : "Error");
            $('#txtTestTokenNumber2').attr("class", j.txtTestTokenNumber2 ? j.txtTestTokenNumber2 : "Error");
            $('#txtTestTokenNumber3').attr("class", j.txtTestTokenNumber3 ? j.txtTestTokenNumber3 : "Error");
            $('#txtTestTokenNumber4').attr("class", j.txtTestTokenNumber4 ? j.txtTestTokenNumber4 : "Error");
            $('#ErrorControl').html('');
        }
    }

    $("#credentialsForm").on('submit', function() {
        $.ajax({
            url: "myCredentialsChecker.xxx",
            data: $(this).serialize(),
            type: 'POST', // or 'GET'
            dataType: 'json',
            success: function(j) {
                loginResponse(j);
            ),
            error: function() {
                loginResponse();
            }
        });
        return false;
    });
});

ノート

  • とはどちらも偽なelse{...}ので、句のすべてが上記のように単純化されます。3 項の代替手段 toも、コードをコンパクトにします。''undefinedfooif(){...} else{...}

  • 返された文字列にクラスを設定することが正しいことだとは確信していませんが、この側面は変更していません。

于 2012-08-23T05:48:39.617 に答える