gpt4 book ai didi

jQuery getJSON 回调不起作用 - 即使使用有效的 JSON - 并且似乎使用 "OPTION"请求而不是 "GET"

转载 作者:太空狗 更新时间:2023-10-30 02:50:40 26 4
gpt4 key购买 nike

背景是我有一个配置有 Django View 的 celery 分布式作业服务器,该 View 以 JSON 格式返回正在运行的作业的状态。作业服务器位于 celeryserver.mydomain.com,我从中执行 jQuery 的页面是 www.mydomain.com 所以我不需要为此考虑 JSONP,因为没有向不同的域?

查看我的服务器日志,我发现 jQuery 正在按预期每 3 秒执行一次 getJSON 调用(使用 Javascript setInterval)。它似乎确实使用了 OPTION 请求,但我已经使用 curl 确认仍然为这些请求类型返回 JSON。

问题是下面 jQuery 中的 console.log() Firebug 调用似乎从未运行过! getJSON 调用之前的那个。没有回调工作对我来说是个问题,因为我希望以这种方式轮询 celery 工作状态并根据工作状态做各种事情。

<script type="text/javascript">
var job_id = 'a8f25420-1faf-4084-bf45-fe3f82200ccb';

// wait for the DOM to be loaded then start polling for conversion status
$(document).ready(function() {
var getConvertStatus = function(){
console.log('getting some status');
$.getJSON("https://celeryserver.mydomain.com/done/" + job_id,
function(data){
console.log('callback works');
});
}
setInterval(getConvertStatus, 3000);
});
</script>

我使用 curl 来确定我从服务器接收到的内容:

$ curl -D - -k -X GET https://celeryserver.mydomain.com/done/a8f25420-1faf-4084-bf45-fe3f82200ccb
HTTP/1.1 200 OK
Server: nginx/0.6.35
Date: Mon, 27 Jul 2009 06:08:42 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: close

{"task": {"executed": true, "id": "a8f25420-1faf-4084-bf45-fe3f82200ccb"}}

那个 JSON 对我来说看起来很好,JSONlint.com 现在为我验证了它...我还使用 -X OPTION 模拟了 jQuery 查询,并从服务器返回了与使用 GET(应用程序的内容类型/json 等)

我已经关注这个很久了,非常感谢任何帮助。我是一个非常新的 jQuery 用户,但这看起来应该没有问题,所以我不知道我做错了什么!

最佳答案

我认为您遇到了跨子域问题,sub.domain.tlddomain.ltd 不一样。

我建议你安装Firebug并检查您的代码是否在请求开始时抛出 Permission denied 异常,如果是这样,请使用 JSONP...

关于jQuery getJSON 回调不起作用 - 即使使用有效的 JSON - 并且似乎使用 "OPTION"请求而不是 "GET",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1186827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com