【问题标题】:Why does my ajax call not returning my data from controller?为什么我的 ajax 调用没有从控制器返回我的数据?
【发布时间】:2022-02-10 17:39:10
【问题描述】:

我很难从客户端获取数据,但我在 Visual Studio 上的代码在断点上时会获取数据,但我无法在浏览器上接收数据。

这是我的 AJAX 调用

function GetRecord() {
    var elemEmployee = 55;
    var startDT = $('#searchFilterStartDate').val();
    var endDT = $('#searchFilterEndDate').val();

    $.ajax({
        url: "/Modules/GetDTRRecord",
        type: "GET",
        data: {
            EmployeeID: elemEmployee,
            DateFrom: endDT,
            DateTo: startDT,
        },
        dataType: "json",
        success: function(data) {


            console.log('Data Success ');

             console.log(data);


        }
    });
}

这是我的控制器:


        [HttpGet]
        public List<DTRRecordList.Entity> GetDTRRecord(DTRRecordList.Entity data)
        {
            var entity = new DTRRecordList();
         
            return entity.GetDTR(data);
        }

正如您在下面看到的,我得到了 38 条记录,但我无法在我的 js 上收到它,即使 console.log('Data Success') 没有显示在我的控制台上。

【问题讨论】:

  • 您也可以处理error 而不仅仅是success
  • 尝试在你的js中删除dataType: "json",,可能返回值不是json。您的 GET 请求中也有 data,并且还为成功结果处理程序的函数传递了相同的名称,更改输入参数名称并尝试。
  • @Crowcoder 是的,控制台仍然没有任何内容。
  • @AnandSowmithiran 你是什么意思?我应该在我的success: function(data){} 上更改变量名?
  • 控制台没有其他错误吗?浏览器开发工具的网络窗格中的响应是什么样的?

标签: c# ajax asp.net-core


【解决方案1】:

您需要从您的Controller 方法返回JSON。您可以将方法更改为:

    [HttpGet]
    public JsonResult GetDTRRecord(DTRRecordList.Entity data)
    {
        var entity = new DTRRecordList();
        var getDTR= entity.GetDTR(data);
        return Json(new {dtrData= getDTR});
    }

在您的Ajax 电话中:

$.ajax({
    url: "/Modules/GetDTRRecord",
    type: "GET",
    data: {
        EmployeeID: elemEmployee,
        DateFrom: endDT,
        DateTo: startDT,
    },
    dataType: "json",
    success: function(data) {
         console.log('Data Success ');
         console.log(data.dtrData);
    },
    error: function(error) {
        console.log(error)
    }
});

在与 O.P 讨论并查看代码后,发现问题正在发生,因为 form 提交正在发生,导致页面重新加载两次。移除表单事件并在中添加点击事件后:

$(document).ready(function () {
    //On Clink "Search Button"
    $("#searchbtn").click(
    function () { GetRecord(); });
});

数据似乎如期而至。

【讨论】:

  • @AnandSowmithiran 不,这应该可以。 return new Json 没有意义。
  • 我有The name JsonRequestBehavior does not exist in the current context
  • 不,我使用的是 Microsoft.AspNetCore.Mvc;
  • @JohnPhillipAbello 你没有在你的问题中提到这一点,而且 asp.netcore 也没有标签。 JsonRequestBehavior 在 ASP.NET Core 中已被弃用。您可以删除该选项并尝试。
  • 对不起,我没有注意到我放错了标签,我试过了,仍然没有任何反应,控制台没有显示任何内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多