【问题标题】:jQuery Ajax fails when accessing a resource (Django Tastypie)访问资源时 jQuery Ajax 失败 (Django Tastypie)
【发布时间】:2012-07-07 19:06:56
【问题描述】:

我创建了一个简单的资源,通过 GET 输出我的 json 对象。 URL 是 http://127.0.0.1:8000/api/v1/advert/?format=json 并且工作正常。现在,当我尝试使用 jQuery ajax 方法访问资源时,我得到了;

这是我的 JavaScript;

$.ajax({
        url : 'http://127.0.0.1:8000/api/v1/advert/',
        dataType : 'json',
        type : 'GET',
        data : { format: 'json' },
        success : function(data) {
            console.log(data);
        }
    });

这是什么原因造成的,更重要的是我该如何纠正它?当我尝试用一​​个简单的资源实现 Django Piston 时也会发生同样的错误,所以我猜这个问题更多地与实际的 AJAX 请求有关?

编辑。

我对 jQuery ajax 调用稍作调整,并包含了请求内容。

【问题讨论】:

  • 你不应该使用 data 选项来包含 GET 参数(例如格式)吗?
  • 嗨,我已经更新了 JS 代码,现在可以使用 data 参数。不幸的是,它仍然失败。

标签: jquery ajax django rest tastypie


【解决方案1】:

经过多次挠头并尝试使用 curl 模拟错误后,我终于找到了问题的根源。我正在使用带有扩展 Adblock Plus (Adblock Plus (Beta) 1.2) 的 Google Chrome 浏览器。禁用此扩展后,ajax 请求工作正常!我不确定 ABP 究竟是如何影响它的,但它绝对是问题的根源。

【讨论】:

    【解决方案2】:

    我尝试了你的 ajax 代码,用于我自己的一个我知道正在工作的美味 API。

    对于 jQuery ajax 命令最初发送的 OPTIONS 请求,我还得到一个“红色”结果行。如果我查看该请求的响应,我发现它实际上是 OK 200。

    似乎 ajax 调用发出了 OPTIONS 请求,获得了 200 响应状态,然后取消了传输,因为它已经在“允许”响应标头中包含了所需的一切。

    在您的情况下,它看起来实际上由于某种原因而失败(或者浏览器可能只是以不同的方式描述它?)。

    你能添加你得到的响应头吗?

    (我会分享我的屏幕截图,但我仍在完善我的代表:-/)

    【讨论】:

    • 您好,我已经用额外的屏幕截图更新了原始帖子,并稍微修改了 ajax 调用。它仍然失败(尽管略有不同 - 请求方法现在是 GET 而不是 OPTIONS)。也没有响应头信息,所以我认为 ajax 调用实际上并不存在?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2012-08-17
    • 2013-11-27
    • 1970-01-01
    • 2012-07-02
    • 2011-12-02
    相关资源
    最近更新 更多