使用 Kendo UI Json 请求期间出现严重错误

Get Critical error during Json request using Kendo UI

我有问题。在我的公司,我需要尝试 Angular.js 如何与 ASP.NET MVC 一起工作。现在我想创建一个简单的小应用程序。在首页上有一个带有 Kendo UI 网格的视图。在我的 App.js 文件中,我从 Data 控制器读取数据。控制器操作被调用,但一旦代码执行完毕,我就会收到以下错误:

这是我的其余代码:

控制器:

[HttpGet]
public JsonResult GetEmergencyRegions([DataSourceRequest]DataSourceRequest request, string searchterm)
{
    var emergencyRegions = _repository.GetEmergencyRegionBySearchTerm(searchterm);
    return Json(emergencyRegions.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}

App.js

$scope.gridOptions = {
    columns: [{
        field: "Description",
        title: "Beschreibung"
    }, {
        field: "Region",
        title: "Region"
    }, {
        field: "Phone",
        title: "Telefon"
    }, {
        field: "HasPointOfSale",
        title: "PoS"
    }],
    pageable: true,
    dataSource: {
        pageSize: 5,
        transport: {
            read: function (e) {
                $http.jsonp('/Data/GetEmergencyRegions')
                  .then(function success(response) {
                      e.success(response.data);
                  }, function error(response) {
                      alert('something went wrong')
                      console.log(response);
                  })
            }
        }
    }
};

使用网格查看

<kendo-grid options="gridOptions">

</kendo-grid>

在 Whosebug 上,我已经找到了将 ?callback=JSON_CALLBACK 添加到 jsonp URL 的方法,但没有帮助。

通知

当我删除控制器中的 JsonRequestBehavior.AllowGet 时,我没有收到错误,但随后收到 status Code 404.

看来你在App.js

中多余的","

改变

 columns: [{
    field: "Description",
    title: "Beschreibung",
},

 columns: [{
    field: "Description",
    title: "Beschreibung"
},

希望对您有所帮助。

找到解决方案。 有几处需要更改:

  1. 删除 Controller 中的 DataSourceRequest 部分。通过此更改,严重的 JavaScript 错误消失了。

    public JsonResult GetEmergencyRegions(string searchterm)
    {
        var emergencyRegions = _repository.GetEmergencyRegionBySearchTerm(searchterm);
        return Json(emergencyRegions, JsonRequestBehavior.AllowGet);
    }
    
  2. 我的 App.js 现在又出现了 404 错误。解决方案是将 jsonp 更改为 get。我在下面 link 中找到了这个解决方案:AngularJS: how to make a jsonp request

    read: function (e) {
         $http.get('/Data/GetEmergencyRegions?callback=JSON_CALLBACK')
             .then(function success(response) {
                  e.success(response.data);
              }, function error(response) {
                  alert('something went wrong')
                  console.log(response);
         })
    }
    
  3. 运行 解决方案并快乐:-)