1

我想使用 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 方法......请让我知道我缺少什么。

谢谢,

4

1 回答 1

2

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

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

使用 aspx 视图引擎:

$.ajax({
    url: '<%: Url.Action("GetUserName") %>',
    type: 'POST'
于 2012-07-23T06:07:03.297 回答