2013-11-02 54 views
1

我使用jQuery验证插件和我打电话这样当我使用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); 
} 

如果我通过一个绰号,我得到这个错误信息

“昵称已被占用。试试喽!”

enter image description here

正如你可以看到我的错误信息出现引号括起来。为什么会出现这种情况?如何解决这个问题?

+0

试试$('#NickName')。html()而不是.val() – Adrian

回答

1

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

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

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

看到远程验证方法documentation

+0

谢谢。它做到了 – naveen