2011-08-12 64 views
0

我正在使用jQuery验证插件。要检查用户名已经存在,我已经在我看来这样做:通过getJSON从视图调用ASP MVC 3控制器

$.validator.addMethod('usernameExists', function (value) { 
    var data = {}; 

    data.username = $('#Username').val(); 

    $.getJSON('/Account/CheckUsername', data, function (result) { 
     if (result.exists == 'true') 
      return true; 
     else 
      return false; 
    }); 

    return false; 
}, 'Username already exists.'); 

而在我的AccountController,我有:

public JsonResult CheckUsername(string username) 
{ 
    string test = "false"; 

    return Json(test); 
} 

我已经把断点到“CheckUsername”和它永远不会到达那里,但它涉及到“getJSON”调用(我试过了)。有人能告诉我我做错了什么吗?显然,“getJSON”有些问题......但是什么?

+0

尝试从URL中移除第一斜线:'$ .getJSON( '帐户/ CheckUsername' ...' – Mrchief

+0

如果您没有不重新发明轮子,已经有内建[RemoteAttribute] (http://msdn.microsoft.com/en-us/library/system.web.mvc.remoteattribute(VS.98).aspx) – archil

+0

@Mrchief:试过了,没有帮助。 – Alex

回答

0

使用try,

$.getJSON('@Url.Action("CheckUsername", "Account")', data, function (result) { 

进一步使用"/Account/CheckUsername"将成为你的麻烦时,你要部署的网站。

+0

没有帮助... – Alex

+0

然后尝试这个为你的da ta变量var data = {用户名:$('#用户名').val()}; –

+0

之前尝试过。产生相同的结果。 – Alex

2

首先,尝试直接从浏览器调用此操作:如http://localhost:1212/Account/CheckUsername。如果出现错误,您会看到它。我假设你应该使用JsonRequestBehavior.AllowGet使其工作,因为getJSON发送HTTP GET。

return Json(test, JsonRequestBehavior.AllowGet); 
+0

没有帮助... – Alex

+0

发生了什么事?你试图直接调用这个动作,但是断点没有出现? –

+0

是的。这和以前完全一样。 getJSON调用没有任何反应。 – Alex

0
$(function() { 
    $.getJSON("your path here", { username: $('#Username').val() }, function (data) { 
     //logic goes here 
    }); 
}); 
相关问题