jQueryAjax在这里返回了什么?

jQueryAjax在这里返回了什么?,jquery,asp.net-mvc-4,Jquery,Asp.net Mvc 4,我正在尝试编写ajax用户搜索。我有以下文本字段: <input type="text" id="userSearch" class="search-query" placeholder="Search"> 以下是UserController和Application和Repository类: [HttpGet] public ActionResult SearchUsers(string displayName) { return Json(userApp.GetUserB

我正在尝试编写ajax用户搜索。我有以下文本字段:

<input type="text" id="userSearch" class="search-query" placeholder="Search">
以下是
UserController
Application
Repository
类:

[HttpGet]
public ActionResult SearchUsers(string displayName)
{
    return Json(userApp.GetUserBySearch(displayName), JsonRequestBehavior.AllowGet);
}

public List<User> GetUserBySearch(string displayName)
{
    return userRepo.GetUserBySearch(displayName);
}

public List<User> GetUserBySearch(string displayName)
{
    return context.Users.Include("Group").Where(u => u.DisplayName.Contains(displayName)).ToList();
}
[HttpGet]
public ActionResult SearchUsers(字符串显示名称)
{
返回Json(userApp.GetUserBySearch(displayName),JsonRequestBehavior.AllowGet);
}
公共列表GetUserBySearch(字符串显示名称)
{
返回userRepo.GetUserBySearch(displayName);
}
公共列表GetUserBySearch(字符串显示名称)
{
返回context.Users.Include(“组”).Where(u=>u.DisplayName.Contains(DisplayName)).ToList();
}
但这根本不起作用。它根本不发出警报。那它意味着什么?它意味着数据为空且不为空?! 我也试过:

var i = 0;
for (i = 0; i <= data.length; i++) {
    alert(data[i].UserId);
}
var i=0;
对于(i=0;i,我建议使用来测试浏览器和服务器之间发生了什么

我还建议像这样使用.ajax,它允许您更明确地捕获服务器上发生的错误:

var URL = 'yourURLGoesHere';
$.ajax({
    url: URL, type: "post", data: yourdata, dataType: 'json', contentType: "application/json",
    success: function (data, status, jqXHR) {
        console.log('status:', status);
        console.log('jqXHR:', jqXHR);
        console.log('data:', data);
        if (data) {
            //do your OK Stuff
        } else {
            //do your NOT OK Stuff
        }
    },
    error: function (data, status, jqXHR) {
        console.log('responseText:', data.responseText);
        //do your error stuff

    }
});
更新

看起来主要的问题是如何向服务器发送数据

如果您没有看到500错误的详细信息,则表明您正在使用WebAPI,并且尚未设置它以向您显示错误详细信息。如果是这种情况,这可能会有所帮助

下面是使用.ajax()并将displayName放入querystring中的代码的更新版本—主要优点是您可以捕获错误事件并相应地进行处理

$("#userSearch").keyup(function () {
    if ($(this).val().length >= 3) {
        var URL = '/User/SearchUsers/?displayName=' + encodeURIComponent($(this).val());
        $.ajax({
            url: URL, type: "post", dataType: 'json', contentType: "application/json",
            success: function (data, status, jqXHR) {
                console.log('status:', status);
                console.log('jqXHR:', jqXHR);
                console.log('data:', data);
                if (data) {
                    //do your OK Stuff
                } else {
                    //do your NOT OK Stuff
                }
            },
            error: function (data, status, jqXHR) {
                console.log('responseText:', data.responseText);
                //do your error stuff

            }
        });
    }
});

将代码放入
ready
事件中

$(document).ready(function(){
    $("#userSearch").keyup(function () {
        var value = $(this).val();    
        if (value.length >= 3) {
            $.getJSON('/User/SearchUsers', { displayName: value }, function (data) {
                if (data == null) {
                    alert("nothing");
                }
                else{
                    alert("OK");
                }
            });
        }
    });
});

使用浏览器开发工具中的“网络”选项卡,您可以准确地看到向服务器发送的内容和从服务器接收的内容。(如果您的浏览器没有开发工具,请切换到现代浏览器。IE8+、Chrome、Opera、Safari、Firefox[以及Firebug附加组件]都有开发工具。)使用ajax方法时,我在控制台中收到一个404 Not Found错误,使用我的方法时,它给出一个500内部服务器错误。您认为如何?您使用的是WebAPI还是MVC?在调试模式(F5)下运行代码,并在控制器上设置断点(F9)-观察发生了什么。你安装了Fiddler吗?因为它通过浏览器代理数据,所以通常更容易准确地看到发生了什么。谢谢你为我花费时间。;@HamidReza,你正在向get发送数据(displayName),你是如何从get获取数据的?
$(document).ready(function(){
    $("#userSearch").keyup(function () {
        var value = $(this).val();    
        if (value.length >= 3) {
            $.getJSON('/User/SearchUsers', { displayName: value }, function (data) {
                if (data == null) {
                    alert("nothing");
                }
                else{
                    alert("OK");
                }
            });
        }
    });
});