ajax呼叫中止自动

时间:2011-01-04 00:09:15

标签: javascript jquery ajax

我有一个非常奇怪的问题。

我有一个正常的ajax调用,可以将您从电脑中选择的头像上传到服务器..

这有时会起作用,有时候我可以在网下的萤火虫中看到,经过一段时间的加载后,它会被“中止”并标记为红色。

我甚至有一个ajaxstart ajaxend加载器图标,即使它被中止,图标也会一直显示。

为什么会发生这种情况,我该如何防止它中止?如果它中止了,我怎么能再次“再试一次?”为什么它甚至流产:S

我注意到它发生在更大的尺寸/尺寸文件上?在它请求的文件(fileupload.php)上我确实有一个检查器,如果它更大则回调错误。但我认为它甚至没有到达文件之前“滞后”并停止..

更新确认:当我尝试使用更大尺寸的ajax发送文件时会发生这种情况。

2 个答案:

答案 0 :(得分:2)

您是如何通过Ajax发送文件的? Ajax不支持发送文件。

如果是jQuery控制台中的连接超时,它将以红色显示,并且将调用ajax请求的失败处理程序。

您可以处理您想要的任何条件。要删除timeout问题,您可以向ajax请求添加属性timeout。我认为默认值是30秒

$.ajax({
    url : "",
    data : {},
    success : function(data, textStatus, XMLHttpRequest){
    },
    error: function(XMLHttpRequest, textStatus, errorThrown){
        if(textStatus == "timeout"){
            alert("timeout")
        }
    },
    timeout : 600000
});

由于您使用的是ajaxfileupload,请尝试使用

$.ajaxFileUpload({
    .....,
    timeout: 60000,
    error: function (data, status, e)
    {
        if(status == "timeout"){
            alert("timeout")
        }else{
            alert(status)
        }
    }
})

并确保您的服务器中没有设置任何最大文件上传大小。

答案 1 :(得分:0)

它可能已中止,因为请求在客户端超时。增加jquery中的超时。