1

我创建了一个简单的资源,通过 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 调用并包含了请求内容。

4

2 回答 2

4

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

于 2012-07-07T19:48:06.640 回答
0

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

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

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

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

你可以添加你得到的响应头吗?

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

于 2012-07-07T17:44:17.050 回答