【问题标题】:AngularJS ajax resulting in two calls for html & jsonAngularJS ajax 导致对 html 和 json 的两次调用
【发布时间】:2014-06-13 04:43:57
【问题描述】:

所以我在 Web 浏览器中打开了网络捕获,以查看来自 AngularJS 的 ajax 调用。每次拨打电话,似乎都有两个结果:

URL|Protocol|Method|Result|Type|Received|Taken
/p/jobs/03512dc8-6f25-49ea-bdff-0028ac2023cb|HTTP|GET|301|text/html|408 B|< 1 ms
/p/jobs/03512dc8-6f25-49ea-bdff-0028ac2023cb|HTTP|GET|200|application/json|0.79 KB|15 ms

它看起来是在尝试先请求 HTML,得到 301,然后再请求 JSON。如何消除对 HTML 的请求?我正在使用 $resource 来执行此操作,但我也想查看 $http 的示例。

此外,接收框架是 NancyFX for .NET。也许我需要指定一个标头以确保它始终返回 JSON?我已经尝试过“接受”标题,但似乎没有什么区别。就好像 Nancy 总是尝试在切换到 JSON 之前先返回一个 View。

Javascript 代码(稍微翻译自 TypeScript):

$resource(jobUrl, {}, { get: {method: "GET", isArray: false }});

南希代码:

    public class JobService : NancyModule
{
    public static readonly string Prefix = "/p/jobs";

    WebLogger logger;

    public JobService(WebLogger logger)
        : base(Prefix)
    {
        this.logger = logger;

        Get[""] = _ => GetJobs();
        Get["/{id}"] = _ => GetJob(_.id);
        Get["/{id}/nodes"] = _ => GetNodes(_.id);
        Get["/{id}/faults"] = _ => GetFaults(_.id);
    }

    Job GetJob(string id)
    {
        lock (logger)
        {
            if (logger.JobGuid != id)
            {
                Context.Response.StatusCode = HttpStatusCode.NotFound;
                return null;
            }

            return MakeJob();
        }
    }

【问题讨论】:

  • 您能否发布处理这些请求的 Nancy 模块以及导致这些请求的 Javascript?
  • 好的,我已经发布了代码。

标签: angularjs nancy


【解决方案1】:

您的代码的某些部分会有所帮助,但让我们尝试一下 - 您已将字符 / 放在 $resource 定义的末尾。 Angular 已向服务器请求目录的内容,服务器响应带有 header 301 - 重定向到文件,因为 Angular 期望一些数据响应而不是目录列表。

【讨论】:

  • 不,我的网址中没有尾部正斜杠。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-26
  • 2013-04-18
  • 2014-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多