AngularJS Http Post - 500内部服务器错误

时间:2017-04-03 17:09:44

标签: javascript angularjs asp.net-mvc

我知道那里还有很多其他500 (Internal Server Error)问题,但阅读它们仍然无法解决我的问题。

我正在研究两种有$http post次调用的angularjs方法。

第一个问题

第一个成功点击服务器端控制器,并按照我的预期返回一个JSON对象,但我的下拉菜单没有被工厂调用的结果填充。

关注我的一件事是控制台输出。 (正如您在下面的代码中看到的,我有几个打印语句。)打印URL,然后我的下拉选项字段打印为undefined,然后服务器的响应返回响应。我是否需要告诉JS等待响应?某种ASYNC?

Drop Downs not Loading

第二个问题

我有完全相同的http post方法调用(但是有新变量),我收到500 (Internal Server Error)错误消息。没有为此调用命中服务器端ctrl方法(基于ctrl中的断点)。

500 Error

问题

  1. 如何使用结果成功填写我的下拉列表 $http.post致电?
  2. 为什么我的第二个$http.post方法会创建500 (Internal Server Error)
  3. 的Javascript

    'use strict';
    var app = angular.module('LineModule', ['ngMaterial']);
    
    app.controller("LineCtrl", ['$scope', '$http', 'LineService',
    function ($scope, $http, LineService) {
        $scope.Types = LineService.get_DropDownList("Type");
        console.log("Types:"); console.log($scope.Types);
        $scope.Statuses = LineService.get_DropDownList("Status");
        $scope.FundingSources = LineService.get_DropDownList("Funding_Source");
        ...
    
        $scope.get_DeptLeader = function () {
            $scope.SelectedLeader = LineService.get_DeptLeader($scope.CPOC_Title, $scope.CostCenter_ID);
        };
    
    }]);
    
    app.factory('LineService', ["$http", function ($http) {
        return {
            ...
    
    
            ***FIRST METHOD***
            get_DropDownList: function (field) {
                var info = {
                    section: 'Line',
                    field: field
                };
    
                var URL = getBaseURL() + 'DBO/DropDown_GetList';
                console.log(URL);
                var DropDown;
                $http({
                    method: 'POST',
                    url: URL,
                    data: JSON.stringify(info),
                })
                .then(function (response) {
                    if (response !== 'undefined' && typeof (response) == 'object') {
                        DropDown = response.data;
                        console.log(DropDown);
                        return DropDown;
                    }
                    else {
                        console.log('ERROR:');
                        console.log(response);
                        return 'No Options Found';
                    }
                });
            },
    
    
            ***SECOND METHOD***
            get_DeptLeader: function (CPOC_Title, CostCenter_ID) {
                console.log("call get leader");
    
                if (CPOC_Title < 1 || CPOC_Title == undefined) { return "No Title Selected"; }
                if (CostCenter_ID < 1 || CostCenter_ID == undefined) { return "No Cost Center Selected"; }
    
                console.log(CPOC_Title);
                console.log(CostCenter_ID);
    
                var info = {
                    Leader_ID: CPOC_Title,
                    CostCenter_ID: CostCenter_ID
                };
    
                var URL = getBaseURL() + 'DBO/DeptLeader_GetCurrent';
                console.log(URL);
                var DeptLeaders;
                $http({
                    method: 'POST',
                    url: URL,
                    data: JSON.stringify(info),
                })
                .then(function (response) {
                    if (response !== 'undefined' && typeof (response) == 'object') {
                        DeptLeaders = response.data;
                        console.log(DeptLeaders);
                        return DeptLeaders;
                    }
                    else {
                        console.log('ERROR:');
                        console.log(response);
                        return 'No Options Found';
                    }
                });
            },
        };
    }]);
    

    DBO控制器:服务器端

    [HttpPost]
    public JsonResult DeptLeader_GetCurrent(string Leader_ID, string CostCenter_ID)
    {
        try {
            List<SelectListItem> DL = DB.DeptLeader_GetByIDs(Leader_ID, CostCenter_ID);
            return Json(DL, JsonRequestBehavior.AllowGet);
        }
        catch (Exception e){
             string error = e.ToString();
             return null;
         }
    }
    
    [HttpPost]
    public JsonResult DropDown_GetList(Sections section, DropDownFields field)
    {
        return Json(DB.GetDropDownValues(section, field), JsonRequestBehavior.AllowGet);
    }
    

    CSHTML

    <div ng-app="LineModule" ng-controller="LineCtrl" class="container col-md-12">
        ...
        <select ng-model="Type_ID" class="form-control" required>
            <option ng-value="T.Value" ng-repeat="T in Types">{{T.Text}}</option>
        </select>
        ...
        <select ng-model="CPOC_Title" class="form-control" ng-change="get_DeptLeader()">
            <option ng-value="D.Value" ng-repeat="D in DeptLeaders">{{D.Text}}</option>
        </select>
        {{SelectedLeader}}
        ...
    </div>
    

0 个答案:

没有答案