下午好人!
我在jquery / ajax
中有以下代码$.ajax({
url:'../pujar',
dataType:'json',
type:'get',
cache:true,
});
当我发送php时,此代码正常工作,但现在我不知道如何使用ajax超时。
在另一个代码中,我使用以下结构,但我对代码没有任何问题。
setInterval(function() {
$.ajax({
url: '../ajaxpujas',
dataType: 'json',
type: 'get',
cache: true,
success: json,
});
function json(data) {
$("#tbodyid")
.empty();
$(data)
.each(function(index, value) {
var table = '<tr><td>' + value.users.name + '</td><td>' + value.id + '</td></tr>';
$('#tbodyid')
.append(table);
});
}
}, 1000);
当我尝试使用此代码时,无法正常工作。我需要每秒重装一次。
$.ajax({
url:'../pujar',
dataType:'json',
type:'get',
cache:true,
timeout:1000,
});
答案 0 :(得分:2)
您在AJAX请求中使用的“超时”与javascript中的setTimeout不同。 AJAX超时实际上指定了请求超时的时间。
根据jquery的文档
超时 类型:数字 设置请求的超时(以毫秒为单位)。这将覆盖使用$ .ajaxSetup()设置的任何全局超时。超时时间从$ .ajax调用点开始;如果其他几个请求正在进行且浏览器没有可用的连接,则请求可能会在发送之前超时。
因此,您实际上是在为请求设置超时(即,如果源在1000ms内没有响应,则认为它是超时故障)。因此,你必须每秒重新加载它。
你想用setInterval做什么会有效。虽然我建议使用setTimeout递归而不是setInterval以获得更好的性能(以及我猜想的预期效果)。
答案 1 :(得分:1)
设置请求的超时(以毫秒为单位)。这将覆盖使用$ .ajaxSetup()设置的任何全局超时。超时时间从$ .ajax调用点开始;如果其他几个请求正在进行且浏览器没有可用的连接,则请求可能会在发送之前超时。在jQuery 1.4.x及更低版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员可能会抛出异常。仅在Firefox 3.0+中,超时无法取消脚本和JSONP请求;即使在超时时间之后到达,脚本也会运行。
timeout
中的 $.ajax()
s设置请求完成的超时(以毫秒为单位),如果由于任何原因请求未在请求中止的时间范围内完成
你必须使用
setInterval(function() {
$.ajax({
url: '../pujar',
dataType: 'json',
type: 'get',
cache: true,
success: function (data) {
}
});
}, 1000);