我想访问某些REST URI。
$.ajax({
type: "POST",
url: url + "result/" + ticket_id,
success: function(data) {
setTimeout(function(){pollResponse(url,data.id);}, 3000);
}
});这是可行的。它访问URI,并且视图函数完成它的工作。因此,在success上,它将移动到新的URI。
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的视图函数所做的全部操作是
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')发布于 2012-08-05 10:21:41
您可能会在结果中遇到解析问题或跨域问题。尝试更改代码以直接使用ajax函数:
$.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的快捷方式都会出错。这就是为什么我很少使用它们的原因。
发布于 2012-08-05 10:06:52
看起来轮询函数中的setTimeout应该是:
setTimeout(function(){pollResponse(url, data.id);}, 3000);而不是:
setTimeout(function(){pollResponse(url, id);}, 3000);https://stackoverflow.com/questions/11813430
复制相似问题