Asp.net core mvc ASP.NET核心MVC AJAX调用操作方法不起作用

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

我是AJAX新手,我正在尝试从我的控制器方法中获取一些数据到.js文件中,以便在图表中使用这些数据。 现在,每次运行项目时,我都会收到自定义错误消息:“加载数据时出错!请重试。” 这意味着它正在进入AJAX函数内部,但没有成功。 我也不知道如何正确地调试它,看看哪里出了问题

seperate文件中的My.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;
    }

您已经指定了
数据类型:“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中调用我的方法字段,对吗?