Asp.net core mvc ASP.NET核心MVC AJAX调用操作方法不起作用
我是AJAX新手,我正在尝试从我的控制器方法中获取一些数据到.js文件中,以便在图表中使用这些数据。 现在,每次运行项目时,我都会收到自定义错误消息:“加载数据时出错!请重试。” 这意味着它正在进入AJAX函数内部,但没有成功。 我也不知道如何正确地调试它,看看哪里出了问题 seperate文件中的My.js代码如下所示:Asp.net core mvc ASP.NET核心MVC AJAX调用操作方法不起作用,asp.net-core-mvc,asp.net-ajax,Asp.net Core Mvc,Asp.net Ajax,我是AJAX新手,我正在尝试从我的控制器方法中获取一些数据到.js文件中,以便在图表中使用这些数据。 现在,每次运行项目时,我都会收到自定义错误消息:“加载数据时出错!请重试。” 这意味着它正在进入AJAX函数内部,但没有成功。 我也不知道如何正确地调试它,看看哪里出了问题 seperate文件中的My.js代码如下所示: var chartData; $(document).ready(function () { $.ajax({ url: "/Account/GetChartDat
var chartData;
$(document).ready(function () {
$.ajax({
url: "/Account/GetChartData",
data: "",
dataType: "json",
type: "POST",
contentType: "application/json; chartset=utf-8",
success: function (data) {
chartData = data.d.toString();
alert("Data is: " + data.d.toString());
},
error: function () {
alert("Error loading data! Please try again.");
}
}).done(function () {
//After complete loading data
drawChart();
});
});
我的控制器方法如下所示:
public static object[] GetChartData()
{
var chartData = new object[2];
//Manually adding some test data
chartData[0] = new object[]
{
"Day",
"Detected Asparaguses",
"String Operations",
"Successful Sting Operations"
};
chartData[1] = new object[]
{
"21-09-2018",
100,
85,
80
};
return chartData;
}
您已经指定了
数据类型:“json”
,但您的方法不返回json,您将得到500(内部服务器错误)
。更改方法以返回JsonResult
[HttpPost]
public ActionResult GetChartData() // or `JsonResult`
{
var chartData = new object[2];
....
return Json(chartData);
}
然后,ajax回调中的
data
将包含对象数组。您可以尝试在GetChartData方法中放置一个调试点,以查看ajax请求是否生效。另外,尝试将您的操作方法编写为“public JsonResult GetChartData()”并将返回行编写为“return Json(chartData);”。您可以指定数据类型:“Json”,
,但不返回Json。将方法更改为[HttpPost]public ActionResult GetChartData()
,并使用返回Json(chartData)代码>@StephenMuecke是的,成功了!现在我可以看到我在GetChartData中的断点被击中了,AJAX成功了。但是data.d.toString()是“未定义”的。你知道那个密码是不是错了吗?我只是假设它是正确的,因为我在success:function(data){
中的data
教程中看到了它,它是您返回的模型,但是您返回的内容实际上毫无意义(但我不知道你的图表插件是什么,也不知道它需要什么格式的数据。在JSON字符串中没有任何名为d
的键,因此d.toString()
始终是未定义的。如果要使用d
,则需要将其包装为键值对格式。也许您可以告诉我如何将参数传递到ajax方法并将该参数传递到控制器方法?我正在使用Html.Actionlink调用ajax函数。(我删除了$(文档).ready并创建了一个名为的函数)您的意思是将值传递给GetChartData()
方法中的参数吗?如果是,请使用数据:{xxx:someValue}
,然后将方法更改为GetChartData(string xxx)
(或int
或任何您想要的类型。请注意,使用ActionLink()没有意义
如果你不重定向,你也可以只使用
和$('#xx')。单击(function(){…}
我在这里解释得更好一点:只需使用
和脚本中的变量id=$(this.data('id');
和ajax函数中的数据:{fieldId:id},但当我这样做时,我不能在Account controller中调用我的方法字段,对吗?