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 为零,那么我可以假设成功并且不提供任何消息。

好的,我被困在如何在服务器端构建此自定义消息以及如何将其发布回客户端。我正在考虑在剃须刀上添加几个标签并根据计数结果显示/隐藏。如您所见,我进行了非常基本的操作,但无济于事。我目前在警报消息中得到“未定义”。

如果我能得到一些关于这方面的建议,我将不胜感激!!

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 回答