[英]How to get data from ajax call to MVC controller?
我在MVC控制器中有一个查询数据库并返回JSON对象的方法。 它需要一个ajax调用来给它一个查询数据库的日期,但是,在我当前的设置中,我将null
传递给了控制器。
这是我的ajax请求:
$(document).ready(function () {
setInterval(function () {
$.ajax({
type: "POST",
url: '@Url.Action("GetChartData", "Plot")',
dataType: 'json',
data: '04-15-2019 15:49:00',
success: function (result) {
console.log(JSON.parse(result)
}
});
}, 10000)
这是我的控制器:
[HttpPost]
public JsonResult GetChartData(string timeStamp)
{
string output = queryDatabase(timeStamp);
string test = new JavaScriptSerializer().Serialize(output);
return Json(output, JsonRequestBehavior.AllowGet);
}
现在,当我在queryDatabase
调用之后放置一个断点时, timeStamp
变量为null
,我在做什么错呢?
谢谢!
添加[FromBody]
-attribute强制控制器从请求主体读取简单类型:
using System.Web.Http;
[HttpPost]
public JsonResult GetChartData([FromBody]string timeStamp)
{
string output = queryDatabase(timeStamp);
string test = new JavaScriptSerializer().Serialize(output);
return Json(output, JsonRequestBehavior.AllowGet);
}
试试这个
$(document).ready(function () {
setInterval(function () {
$.ajax({
type: "POST",
url: '@Url.Action("GetChartData", "Plot")',
dataType: 'json',
data: {timeStamp: '04-15-2019 15:49:00'},
success: function (result) {
console.log(JSON.parse(result)
}
});
}, 10000)
});
并在控制器中:
[HttpPost]
public JsonResult GetChartData()
{
var timeStamp = Request["timeStamp"];
var output = queryDatabase(timeStamp);
var test = new JavaScriptSerializer().Serialize(output);
return Json(output, JsonRequestBehavior.AllowGet);
}
当您在Ajax调用上使用Post
type和dataType JSON
,您需要以{title:data}
格式传递数据,这种情况下
$(document).ready(function () {
setInterval(function () {
$.ajax({
type: "POST",
url: '@Url.Action("GetChartData", "Plot")',
dataType: 'json',
data: {timeStamp: '04-15-2019 15:49:00'},
success: function (result) {
console.log(JSON.parse(result)
}
});
}, 10000)
在您的控制器中,它将自动捕获参数中的数据。 仅在Ajax调用中仔细检查了您的URL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.