ASMX WebService возвращает XML вместо JSON - PullRequest
0 голосов
/ 11 марта 2020

AngularJS не заполняет таблицу

У меня есть следующий ASMX WebService

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetReport()
{
    List<object> result = new List<object>();
    DataTable results = conn.GetDataSetByQuery("SELECT * FROM TABLE")

    foreach (DataRow i in results.Rows)
    {
        result.Add(new { A = i["ColumnA"], B = i["ColumnB"] });
    }

    var res = JsonConvert.SerializeObject(result);

    return res;
}

Когда я выполняю этот код с помощью вызова ajax или моей функции Angular (ниже) возвращает что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">[{"A":"12","B":"xd"},{"A":"43","B":"xd"},{"A":"Abc","B":"xd"},{"A":"SW1","B":"xd"},{"A":"Abc1","B":"xd"}]</string>

Мой HTML / Angular следующий:

<div class="container" ng-app="myApp" ng-controller="myController">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4>OEE - Dashboard</h4>
        </div>
        <div class="panel-body">
            <div class="row">
                <div class="col-md-12 col-xs-12 form-group">
                    <table id="Table" class="table table-bordered table-condensed">
                        <thead>
                            <tr>
                                <th>Column A</th>
                            </tr>
                        </thead>
                        <tbody id="TableBody">
                            <tr ng-repeat="oee in list track by $index">
                                <td>{{oee.A}}</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>
var app = angular.module('myApp', []);
app.controller('myController', function ($scope, $http) {
    var request = {
        method: 'POST',
        url: 'MyAPI.asmx/GetReport',
        contentType: 'application/json',
        dataType: 'json' 
    };

    $scope.arrOEE = new Array;

    $http(request)
        .success(function (jsonData) {
            $scope.arrOEE = jsonData;
            $scope.list = $scope.arrOEE;

            console.log($scope.list);
        })
        .error(function () {
        });
    });

Этот код добавляет только пустые строки, если я изменяю ooe.Line к oee результат json добавляется в столбец в несколько строк.

btw Мне нужно было поставить track по $ index на ng-repeat, потому что без этого я получаю следующее сообщение об ошибке:

Ошибка: [ngRepeat: dupes]

В чем проблема и как ее решить это? Я использую angular 1.5.0.

...