环境:
<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/