1

我正在使用 jQuery 验证插件,我正在调用这样的远程验证器

在这个我已经设置了这样的远程规则

rules: {
    NickName: {
        required: true,
        minlength: 3,
        remote: {
            url: '/Employee/IsNickNameTaken',
            type: 'POST',
            dataType: 'text',
            data: {
                nickName: function () {
                    return $('#NickName').val();
                }
            }
        }
    }
    },
    messages: {
    NickName: {
        required: "Nick name is required.",
        minlength: "Nick name should be 3 characters."
    }
}

我的控制器是这个

public ActionResult IsNickNameTaken(string nickName)
{
    var result = EmployeeManager.IsNickNameTaken(nickName) ? "Nick name is already taken. Try another!": "";
    return Json(result);
}

如果我通过昵称,我会收到此错误消息

“昵称已经被占用了,换一个试试!”

在此处输入图像描述

如您所见,我的错误消息用引号括起来。为什么会这样?如何解决这个问题?

4

1 回答 1

1

那是因为你已经dataType: 'text'为你的远程规则指定了。这将作为 jQuery ajax 调用的 dataType 选项传递。这意味着 jQuery 不会将响应解释为 json 对象,而是将其作为文本返回。请参阅 jQuery ajax 方法的 dataType 选项

你只需要更新你的规则配置来告诉 jQuery 响应应该被解释为 json。您可以指定dataType: 'json'甚至删除该行,因为远程规则使用的默认值是 json:

remote: {
   url: '/Employee/IsNickNameTaken',
   type: 'POST',
   data: {
       nickName: function () {
           return $('#NickName').val();
       }
   }
}

请参阅远程验证方法文档

于 2013-11-02T10:54:16.127 回答