Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用剑道UI请求Json时出现严重错误_Javascript_Angularjs_Json_Asp.net Mvc_Kendo Grid - Fatal编程技术网

Javascript 使用剑道UI请求Json时出现严重错误

Javascript 使用剑道UI请求Json时出现严重错误,javascript,angularjs,json,asp.net-mvc,kendo-grid,Javascript,Angularjs,Json,Asp.net Mvc,Kendo Grid,我有个问题。在我的公司,我需要尝试Angular.js如何与ASP.NET MVC协同工作。现在我想创建一个简单的小应用程序。在首页上有一个带有剑道UI网格的视图。在我的App.js文件中,我从data控制器读取数据。调用控制器操作,但一旦代码执行完毕,就会出现以下错误: 以下是我的代码的其余部分: 控制器: [HttpGet] public JsonResult GetEmergencyRegions([DataSourceRequest]DataSourceRequest request,

我有个问题。在我的公司,我需要尝试Angular.js如何与ASP.NET MVC协同工作。现在我想创建一个简单的小应用程序。在首页上有一个带有剑道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>

在Stackoverflow上,我已经找到了将
?callback=JSON_callback
添加到
jsonp URL
的方法,但没有任何帮助

注意

当我在我的控制器中删除
JsonRequestBehavior.AllowGet
时,我没有得到错误,但随后我得到了
状态代码404

似乎你在App.js中是多余的

改变

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

希望能有所帮助。

找到了解决方案。 有几件事需要改变:

  • 删除控制器中的
    DataSourceRequest
    部分。通过此更改,关键的JavaScript错误消失了

    public JsonResult GetEmergencyRegions(string searchterm)
    {
        var emergencyRegions = _repository.GetEmergencyRegionBySearchTerm(searchterm);
        return Json(emergencyRegions, JsonRequestBehavior.AllowGet);
    }
    
  • 现在我的App.js中又出现了404错误。解决方案是将
    jsonp
    更改为
    get
    。我在以下链接中找到了此解决方案:

  • 运行解决方案并感到高兴:-)


  • 如果您使用jsonp,您必须添加该回调,那么回调的错误仍然相同吗?@koox00是,回调的错误相同。也许可以帮助您,嗯,我的Bundle.config看起来不错,我认为没有问题,但谢谢:)参考
    public JsonResult GetEmergencyRegions(string searchterm)
    {
        var emergencyRegions = _repository.GetEmergencyRegionBySearchTerm(searchterm);
        return Json(emergencyRegions, JsonRequestBehavior.AllowGet);
    }
    
    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);
         })
    }