我正在使用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);
}
如果我传递了NickName,我会收到此错误消息
“已取名昵称。请尝试另一个!”
正如您所看到的,我的错误消息附在引号中。为什么会这样?怎么解决这个问题?
答案 0 :(得分:1)
这是因为您为远程规则指定了dataType: 'text'
。这将作为jQuery ajax调用的dataType选项传递。这意味着jQuery不会将响应解释为json对象,而是将其作为文本返回。请参阅jQuery ajax method
您只需要更新规则配置,告诉jQuery响应应该被解释为json。你可以指定dataType: 'json'
甚至删除该行,因为远程规则使用的默认值是json:
remote: {
url: '/Employee/IsNickNameTaken',
type: 'POST',
data: {
nickName: function () {
return $('#NickName').val();
}
}
}
请参阅远程验证方法documentation。