2015-02-16 4 views
1

Я пытаюсь использовать asp web api для заполнения таблицы html с помощью углового. все отлично работает, если я отлаживаю firefox (я предполагаю, что мой веб-сервис возвращается в json), но в ie и chrome он не загружается (веб-служба возвращает xml в этих браузерах). В webapiconfig я попытался всегда заставить службу возвратить json, добавив.

 
    Dim appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(Function(t) t.MediaType = "application/xml") 
    config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType) 

это, кажется, работает, когда я перейти к апи во всех браузерах она возвращается JSON, однако $ HTTP GET еще сейчас работает в хроме и то есть.

в т.е. я получаю следующую ошибку

 
    Unhandled exception at line 21, column 406 in http://localhost:53175/Scripts/angular.min.js 

    0x800a139e - JavaScript runtime error: [$injector:nomod] http://errors.angularjs.org/1.3.13/$injector/nomod?p0=api%2Fproducts 

вот мой прибудете

 
    angular.module("api/products").constant("dataUrl", "sportstore.json").controller("sportsStoreCtrl", function ($scope, $resource, dataUrl) { 
    $scope.data = {}; 

    var resultPromise = $resource(dataUrl); 
    resultPromise.success(function (data) { 
     $scope.data.products = data; 
    }) 


    }); 

какие-нибудь мысли?

Дополнительной информация

вот мой контроллер

<pre> 
Imports System.Net 
Imports System.Web.Http 
Imports apitoform.productRepository 

Namespace Controllers 
    Public Class productController 
     Inherits ApiController 

    Private repo As productRepository = productRepository.Current 

    Public Function GetAllProducts() As IEnumerable(Of product) 
     Return repo.GetAll() 
    End Function 

    End Class 
    End Namespace 
</pre> 

апи и вот j_son, что возвращается (я работаю через про угловую книгу, если она выглядит знакомой)

ответ

0

углового .module с 1 параметром возвращает модуль с этим именем - вам нужно определить ваш модуль со списком зависимых модулей (или пустым массивом, если они отсутствуют), как показано ниже:

angular.module("api/products", [])... 

Ошибка ссылка выдает ошибку с подробной информацией о проблеме (Угловой очень хорошо о своих сообщениях об ошибках): https://docs.angularjs.org/error/$injector/nomod?p0=api%2Fproducts

1

К сожалению, это C# код, но он должен проиллюстрировать основную идею для возвращения JSon только из веба-API , Это реальный код из одного из моих проектов.

[Route("api/users/getbyemail/")] 
    public HttpResponseMessage GetByEmail(string email) 
    { 
     try 
     { 
      var result = _userService.GetByEmail(email); 

      HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "value"); 
      response.Content = new ObjectContent(typeof(IEnumerable<UserViewModel>), result ?? new List<UserViewModel>(), new JsonMediaTypeFormatter()); 
      response.Headers.Add("Access-Control-Allow-Origin", "*"); 
      return response; 
     } 
     catch (Exception ex) 
     { 
      HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); 
      response.Headers.Add("Access-Control-Allow-Origin", "*"); 
      return response; 
     } 
    } 

Таким образом, вы возвращаете HttpResponseMessage с содержимым Json.

Я также делаю аналогично в сценарии, где я просто нужно вернуть данные из одного из контроллеров MVC и что еще проще:

public ActionResult Get(string guid) 
     { 
      var profileVm = _profileService.Get(guid); 
      if (profileVm != null) 
      { 
       return Json(profileVm, JsonRequestBehavior.AllowGet); 
      } 

      return new HttpNotFoundResult(); 
     } 
Смежные вопросы