从WebAPI到Angular的JSONP响应

时间:2014-06-05 14:36:42

标签: javascript json angularjs asp.net-web-api jsonp

我有一个简单的角度控制器,如下所示:

angular.module('widget.controllers', [])
  .controller('ProductController', ['$scope','$http', function ($scope, $http) {

      $http.jsonp('http://localhost:27467/api/Products/GetProducts/EUR?callback=JSON_CALLBACK')
      .success(function (data) {
          console.log(data);
      });

  }]);

以及web api控制器中的简单操作:

[HttpGet]
public HttpResponseMessage GetProducts(string id)                
{
      var returnData = data;
      string callback = ControllerContext.Request.GetQueryNameValuePairs().Where(kv => kv.Key == "callback").Single().Value;    
      return Request.CreateResponse(HttpStatusCode.OK, returnData, new JsonpMediaTypeFormatter(new JsonMediaTypeFormatter(),callback), new MediaTypeHeaderValue("text/javascript"));
}

我正在使用this formatter。但是响应不包含围绕JSON的回调函数名称。它产生类似:

({.....});

而不是:

myCallback({....});

请建议解决方案。

1 个答案:

答案 0 :(得分:0)

使用this来控制哪个api允许CORS。史诗!