0

サーバーに戻り、データベースのチェックを少し実行してから、クライアントに戻って結果に応じてメッセージを表示する必要がある検証ルーチンに取り組んでいます.MVC3、Javascript、Ajaxを使用しています。

これは私のクライアント側です:

<script type="text/javascript">
$('#usrid').change(function (e) {

    var formData = $("form").serialize();

    $.ajax({
        url: "ValidateOfficers",
        type: "POST",
        data: formData,
        success: function (data) {
            alert(data.reponseText);
        },
        error: function (data) {
            alert(data.reponseText);
        }
    });
});

これは私のコントローラーアクションです:

        [HttpPost, ActionName("ValidateOfficers")]
    public ActionResult ValidateOfficers(userRole role)
    {
        int holderid = role.holderid;
        int roleSelected = role.roleid;
        int chosenUser = role.usrid;
        int countRoles = db.userRoles.Where(i => i.roleid == roleSelected && i.holderid == holderid).Count();

        if (countRoles == 0) //success:
        {
            Response.StatusCode = 200;
            Response.Write("ok");
            return View("Create", role);
        }
        if (countRoles > 0) //error:
        {
            Response.StatusCode = 500;
            Response.Write("error");
            return View("Create", role);
        }
        return View();
    }

私がやりたいことは、カウントを実行し、カウント結果に基づいてステータスを送り返します..したがって、countRoles = 1 の場合、countRoles > 1 の場合、「役員が存在します」というテキストを返します。countRoles が 0 の場合、成功したと見なしてメッセージを表示できません。

サーバー側でこのカスタム メッセージを作成する方法と、それをクライアントにポストする方法に行き詰まっています。かみそりにいくつかのラベルを追加し、カウント結果に応じて表示/非表示にすることを考えていました.ご覧のとおり、非常に基本的な操作を行いましたが、役に立ちませんでした. 現在、アラート メッセージに「未定義」と表示されます。

これについていくつかのヒントを得ることができれば、私は最も感謝しています!!

4

1 に答える 1

0

アクション

public ActionResult ValidateOfficers(userRole role)
{
  string myMessage;
  \\ here goes all of your other code
  \\ set value into myMessage depending on your conditions.

  return Json(new {foo=myMessage});
}

Javascript

<script type="text/javascript">
$('#usrid').change(function (e) {

    var formData = $("form").serialize();

    $.ajax({
        url: "ValidateOfficers",
        type: "POST",
        data: formData,
        success: function (data) {
            alert(data.foo);

            if(data.foo == "exists")
            { // do something (show/hide msgs)
            }
            else if(data.foo == "duplicate")
            { // do something else (show/hide msgs)
            }
            else
            { // do something else (show/hide msgs)
            }

        },
        error: function (data) {
            alert(data.reponseText);
        }
    });
});

また、json データを返す方法を知るために、この記事もお読みください。

これで問題が解決することを願っています。

于 2012-08-14T10:55:40.330 に答える