javascript - 将 AJAX 中的 javascript 请求发送到 C# 方法,无返回值、ASP.NET、MVC

标签 javascript c# asp.net ajax asp.net-mvc

环境:

<package id="jQuery" version="3.2.1" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" />

我尝试将来 self 的 javascript 文件之一的请求发布到 C# 文件中的方法。到目前为止,请求返回 200 OK,但响应内容为空,使用 console.log(response) 显示 undefined。是我的请求 url 的问题还是我的 C# 函数没有正确设置?任何帮助或建议将不胜感激!

这是我的 JavaScript:

<script>
    console.log("hello_List!")
    function getSearch() {
        console.log($("#query").val())
        console.log(typeof($("#query").val()))
        $.ajax({
            type: "POST",
            url: "./Search",
            data:  $("#query").val(),
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            }
        });
    }

    function OnSuccess(response) {
        alert("Success!");
        console.log(response);
    }
</script>

这是我的 C# 函数,它与我的 javascript 文件位于同一文件夹中:

    public class UsersController : Controller
    {
        [HttpPost]
            [System.Web.Services.WebMethod]
            public JsonResult Search(string query)
            {
                List<EntityModels.AspNetUser> users = new List<EntityModels.AspNetUser>();
                users = db.AspNetUsers.Where(x => x.Email.StartsWith(query)).ToList();
                List<SelectListItem> userObjs = new List<SelectListItem>();

                foreach (var user in users)
                {
                    var userObj = new SelectListItem
                    {
                        Value = user.Id.ToString(),
                        Text = user.Email
                    };

                    userObjs.Add(userObj);
                }

                return new JsonResult()
                {
                    Data = userObjs,
                    JsonRequestBehavior = System.Web.Mvc.JsonRequestBehavior.AllowGet
                };
            }
}

最佳答案

感谢帮助!我现在找到了解决方案,那就是数据。 在这种情况下,带有索引和值的 json 可以工作,而不是简单地输入字符串。 所以我将数据属性更改为:

data: { query: $("#query").val() },

这解决了问题

关于javascript - 将 AJAX 中的 javascript 请求发送到 C# 方法,无返回值、ASP.NET、MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49988334/

相关文章:

javascript - CDATA 真的有必要吗?

javascript - 如何在nodejs控制台中隐藏密码?

c# - Windows Phone 隔离存储防止文件在退出时损坏

c# - 找不到路径的一部分 C# asp.net,路径在那里

c# - 这个逻辑运算符有捷径吗?

asp.net - checkboxlist selectedindexchanged 事件 c# 不工作

javascript - 如何从 Firefox 扩展中获取书签列表或可遍历的书签树?

javascript - 将脚本应用于通过 jquery .html() 插入的元素

asp.net - XPath 不返回节点值 ASP.NET 4.5

javascript - ASP.NET 独立的 javascript 目录结构