访问资源时 jQuery Ajax 失败 (Django Tastypie)
Posted
技术标签:
【中文标题】访问资源时 jQuery Ajax 失败 (Django Tastypie)【英文标题】:jQuery Ajax fails when accessing a resource (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 参数。不幸的是,它仍然失败。 【参考方案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 调用实际上并不存在?以上是关于访问资源时 jQuery Ajax 失败 (Django Tastypie)的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery 在失败时重试 AJAX 请求的最佳方法是啥?
jQuery的ajax,当async为false时,同步操作失败。解决方式
Jquery .ajax():唯一的 AJAX 查询标识符?