2015-07-06 4 views
0

Как передать данные json от контроллера C# в угловые js? Я хочу передать json из контроллера в угловой js. Я пробовал разные, но никто из них не работал. Смотрите мой код ниже,Как передать данные json от контроллера C# в угловые 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; }); 
}); 

C# контроллер код

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

, как это исправить? Что здесь проблема?

+1

Интересно, так как ваш метод помечен как асинхронный, но вы не ожидаете, если объект сериализуется, это Задача .ToString(), а не ваша предназначенная для JSON полезная нагрузка. Можете ли вы сделать сетевой захват и посмотреть, какой фактический ответ от вашей службы находится в браузере? Это может показать проблему. –

+0

Угадайте здесь, но какой тип контента возвращает ваш API? Нужно ли быть приложение/json для Angular, чтобы поднять его? – LukeP

+0

Это должен быть формат Json, чтобы я мог вернуть это возвращаемое значение моей угловой переменной. (Scope.names $) – Kavitha

ответ

1

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

Вот что я получаю, когда я запускаю 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; 
     } 

приводит:

busted

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

 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; 
    } 

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

correct

1

нас е EF, чтобы создать объект JSON и использовать контроллер Web API для GET (выбор), PUT (обновление), POST (вставка), 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; 
     } 
    } 
} 
Смежные вопросы