2013-11-02 97 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