【发布时间】:2018-09-14 07:13:34
【问题描述】:
我是 AJAX 新手,我正在尝试从我的控制器方法中获取一些数据到我的 .js 文件中,以便我可以在我的图表中使用这些数据。 现在每次运行我的项目时,我都会收到自定义错误消息:“加载数据时出错!请重试。” 所以这意味着它正在进入 AJAX 函数,但没有成功。 另外我不知道如何正确调试它以查看哪里出错了。
我在一个单独文件中的 .js 代码如下:
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;
}
【问题讨论】:
-
您可以尝试在GetChartData方法中放置一个调试点来查看AJAX请求是否到达动作。另外,尝试将您的操作方法编写为“public JsonResult GetChartData()”并将返回行编写为“return Json(chartData);”。
-
您指定了
dataType: "json",,但您没有返回 json。将方法更改为[HttpPost] public ActionResult GetChartData()并使用return Json(chartData); -
@StephenMuecke 是的!现在我可以看到我在 GetChartData 中的断点被击中,并且 AJAX 成功了。但是它说 data.d.toString() 是“未定义的”。您可能知道该代码是否错误?我只是认为它是正确的,因为我在教程中看到了它
-
datainsuccess: function (data) {是您返回的模型 - 但您返回的内容确实没有意义(但我不知道您的图表插件是什么或它期望数据采用什么格式. -
您在 JSON 字符串中没有任何名为
d的键,因此d.toString()始终未定义。如果要使用d,则需要将其包装为键值对格式。
标签: asp.net-core-mvc asp.net-ajax