首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在javascript中重新访问URL

尝试在javascript中重新访问URL
EN

Stack Overflow用户
提问于 2012-08-05 10:03:53
回答 2查看 98关注 0票数 0

我想访问某些REST URI。

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: url + "result/" + ticket_id,
    success: function(data) {
        setTimeout(function(){pollResponse(url,data.id);}, 3000);
    }
});

这是可行的。它访问URI,并且视图函数完成它的工作。因此,在success上,它将移动到新的URI。

代码语言:javascript
复制
function pollResponse(url, id)
{
    $.getJSON(url + "status/" + id, {},
        function(data) {
            if (data.report == null)
            {
                console.log(data.status_response);
                setTimeout(function(){pollResponse(url, id);}, 3000);
            }
            else
                console.alert('DONE!');
        }
    );
};

如果URI没有返回report作为数据的一部分(或为空),那么我们将在3秒内再次请求。

但在控制台中打印日志后,响应将停止并返回[200] OK。它不再询问服务器。

我对Python的视图函数所做的全部操作是

代码语言:javascript
复制
from cornice import Service
status = Service(name='status',
                    path=root+'/status/{some_id}',
                    description=status_desc)
@status.get()
def get_status(request):
   // do something

   if (...):
      return {'report': ''}
   else:
      return {'report': 'NOT EMPTY')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-05 10:21:41

您可能会在结果中遇到解析问题或跨域问题。尝试更改代码以直接使用ajax函数:

代码语言:javascript
复制
$.ajax({
    url: url + "status/" + id,
    dataType: 'json',
    data: {},
    success: function(data) {
        if (data.report == null)
        {
            console.log(data.status_response);
            setTimeout(function(){pollResponse(url, id);}, 3000);
        }
        else
            console.alert('DONE!');
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.error(textStatus);
        console.error(errorThrown);
        console.log(jqXHR.responseText);
    }
);

通过这种方式,您可以查看响应是否导致错误。如果出现解析错误,您可以通过error函数上的jqXHR.responseText获取数据,并查看错误所在。

在许多情况下,jQuery中AJAX的快捷方式都会出错。这就是为什么我很少使用它们的原因。

票数 1
EN

Stack Overflow用户

发布于 2012-08-05 10:06:52

看起来轮询函数中的setTimeout应该是:

代码语言:javascript
复制
setTimeout(function(){pollResponse(url, data.id);}, 3000);

而不是:

代码语言:javascript
复制
setTimeout(function(){pollResponse(url, id);}, 3000);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11813430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档