Как передать данные JSON из контроллера C # в угловой JS?

0

Как передать данные json от контроллера С# в угловые js? Я хочу передать json из контроллера в угловой js. Я пробовал разные, но никто из них не работал. Смотрите мой код ниже,

var app = angular.module('myApp', []);
app.controller('customersCtrl', function ($scope, $http) {
    $http.get("/adnActions/getJson")
    .success(function (response) { alert(response.records); $scope.names = response.records; });
});

Код контроллера С#

 public async Task<string> getJson()
    {
                 data="{'records':[ {'Name':'Alfreds Futterkiste','City':'Berlin','Country':'Germany'}, {'Name':'Ana Trujillo Emparedados y helados','City':'México D.F.','Country':'Mexico'}]}";
       return data;    

    }

но я не могу получить данные в угловом js-контроллере ниже, это ошибка, поднятая в консоли, "Ошибка: JSON.parse: ожидаемое имя свойства или"} "в строке 1 столбца 2 данных JSON

как это исправить? В чем проблема?

Теги:
asp.net-mvc

2 ответа

1
Лучший ответ

Я подозреваю, что это из-за формата вашего JSON. Вы используете одинарные кавычки или двойные. Действительный JSON использует двойные кавычки.

Вот что я получаю, когда я запускаю json, я изменил ответ на HttpResponseMessage и явно установил тип содержимого ответа, чтобы устранить это как проблему. Основываясь на вашей ошибке на стороне Javascript, я думаю, ваша проблема заключается в ваших одиночных кавычках в вашем JSON.

    public async Task<HttpResponseMessage> GetJsonSingle()
    {
        HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new StringContent("{'records':[ {'Name':'Alfreds Futterkiste','City':'Berlin','Country':'Germany'}, {'Name':'Ana Trujillo Emparedados y helados','City':'México D.F.','Country':'Mexico'}]}")
        };

        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

        return result;
        }

результаты:

Изображение 174551

В то время как двойные кавычки:

     public async Task<HttpResponseMessage> GetJsonDouble()
    {
        HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new StringContent("{\"records\":[ {\"Name\":\"Alfreds Futterkiste\",\"City\":\"Berlin\",\"Country\":\"Germany\"}, {\"Name\":\"Ana Trujillo Emparedados y helados\",\"City\":\"México D.F.\",\"Country\":\"Mexico\"}]}")
        };

        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

        return result;
    }

работает правильно:

Изображение 174551

0

используйте EF для создания json-объекта и используйте web-api-контроллер для GET (выберите), PUT (обновление), POST (insert), DELETE (удалить) данные

 public class CarsController : ApiController
    {
        private static readonly ICarRepository _cars = new CarRepository();
        // GET api/<controller>
        public IEnumerable<Car> Get()
        {
            return _cars.GetAllCars();
        }

        // GET api/<controller>/5
        public Car Get(int id)
        {
            Car c = _cars.GetCar(id);
            if (c == null)
                throw new HttpResponseException(HttpStatusCode.NotFound);
            return c;
        }

        // POST api/<controller>
        public Car Post(Car car)
        {
            return _cars.AddCar(car);
        }

        // PUT api/<controller>/5
        public Car Put(Car car)
        {
            if (!_cars.Update(car))
                throw new HttpResponseException(HttpStatusCode.NotFound);
            return car;
        }

        // DELETE api/<controller>/5
        public Car Delete(int id)
        {
            Car c = _cars.GetCar(id);
            _cars.Remove(id);
            return c;
        }
    } 
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню