如何在asp.net mvc中使用jquery在文本框更改事件上调用Json方法?

时间:2012-07-23 05:58:52

标签: json asp.net-mvc-3 c#-4.0 jquery

我想使用jquery在我的文本框更改事件上调用JSON方法。

以下是我的JsonResult方法的样子

public JsonResult GetUserName(string emailId)
{
    string UserName = "";
    var query = (from u in DbContext.Users
                 where u.User_Email.ToLower() == emailId.ToLower()
                 select u).SingleOrDefault();
    if(query!=null)
    {
        UserName = query.User_FirstName +", "+query.User_LastName;
    }
    return Json(UserName, JsonRequestBehavior.AllowGet);
}

下面是我的观看代码

Email:&nbsp;<input type="text" id="txtEmail" /><br /><br />
Name:&nbsp;<input type="text" id="txtName" />

下面是jquery代码

<script type="text/javascript">
        $(document).ready(function () {
            //$("#txtEmail").first().focus();

            $("#txtEmail").change(function () {
                var emailId = $(this).val();
                //$("#txtName").val(emailId);
                $.ajax({
                    url: 'GetUserName',
                    type: 'POST',
                    data: JSON.stringify({ emailId: emailId }),
                    dataType: 'json',
                    contentType: 'application/json',
                    success: function (data) {
                        if (data != "" || data != null) {
                            $("#txtName").val(data);
                        }
                        else {
                            alert("Our system does not recognize this email. Please try again.");
                            $("#txtEmail").focus();
                        }
                    }
                });
            });
        });
    </script>

注意....我的GetUserName JsonResult方法属于我的默认控制器。

我的jquery代码已成功执行更改事件,但GetUserName方法未被调用...请告诉我我缺少的内容。

谢谢,

1 个答案:

答案 0 :(得分:2)

你的网址错误它应该像/DefaultControllerName/GetUserName(如果GetUserName不是你必须在网址中指定控制器的默认操作,这是默认控制器并不重要)为什么你应该总是使用内置的UrlHelper来生成ASP.NET MVC中的URL:

$.ajax({
   url: '@(Url.Action("GetUserName"))',
   type: 'POST',

使用aspx viewengine:

$.ajax({
    url: '<%: Url.Action("GetUserName") %>',
    type: 'POST'