【问题标题】:Angularjs and Web Api - JSON formatting issueAngularjs 和 Web Api - JSON 格式问题
【发布时间】:2014-09-06 05:56:16
【问题描述】:

我有一个轻量级 Angularjs 应用程序,我正在尝试从我的 ASP.NET Web Api 控制器处理 json。

在 angularjs 工厂中:

adapter.getLegacyCouriers = function(id) {
  return $http({
    method: 'GET', 
    url: 'http://legacywebapi.azurewebsites.net/api/legacycourier'
  });
}

在控制器中:

legacyService.getLegacyCouriers()
.success(function (response) {
       alert("Success: " + JSON.stringify(response));
})
.error(function (response) { 
    alert("Error: " + JSON.stringify(response)); 
});

当我在 $http get with this one 中交换 URL 时,它会遇到 success 块。但是,我返回以相同方式格式化的 json 的默认 URL 会遇到 error 块。

有人可以帮助我吗?两者都返回 application/json 响应标头,并且都返回 200 OK 的状态(使用 Chrome 进行调试)。我无法弄清楚为什么我的 json 会遇到错误块。

【问题讨论】:

  • @mmeverdies 此消息对应成功请求的示例
  • @rnrneverdies 我在测试 geonames api 时没有收到“每日限制”消息。它返回了一个实际的 json 结果集,该结果集的格式与我从 Web Api 控制器返回的格式完全相同(或者我相信)。
  • 看起来像参数问题。可能该方法没有默认参数。服务器端发生了一些事情。尝试在 api 中记录任何异常
  • @Fals 没有服务器端错误,您可以通过测试 URL:legacywebapi.azurewebsites.net/api/legacycourier - 它响应 200 OK 和 application/json 标头
  • 我收到响应请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'run.jsbin.com' 不允许访问。来自您的legacywebapi.azurewebsites.net/api/legacycourier,请看这里jsbin.com/nugif/1/edit

标签: ajax json angularjs asp.net-web-api asp.net-web-api2


【解决方案1】:

您的服务响应

请求中没有“Access-Control-Allow-Origin”标头 资源。起源'run.jsbin.com';因此不允许访问。 从你的 legacywebapi.azurewebsites.net/api/legacycourier

请看这里jsbin.com/nugif/1/edit

只需开启跨域资源共享即可。

【讨论】:

    猜你喜欢
    • 2014-05-17
    • 2019-02-20
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多