2010-11-25 70 views
24

我试图访问一个404事件,我可以看到404与萤火虫回来,但错误函数不踢,与我的下面的代码,我总是得到错误:成功?jQuery Ajax 404 Handling

即。

$.ajax({ 
    type: 'get', 
    url: 'url: 'https://admin.instantservice.com/resources/smartbutton/5702/10945/available.gif?' + Math.floor(Math.random()*10001), 
    success: function(data, textStatus, XMLHttpRequest){ 
     console.log('Error: ' + textStatus); 
    }, 
    error:function (xhr, ajaxOptions, thrownError){ 
     alert(xhr.status); 
     alert(xhr.statusText); 
     alert(xhr.responseText); 
    } 
}); 

我再次知道1000%即时通讯404在萤火虫没有找到它从来没有触发错误。

我错过了什么吗?

+0

我测试了完全相同的代码和正确地得到了3个错误警报(第一个是'404`)。 – cambraca 2010-11-25 22:34:18

+0

你确定你实际得到了状态码404的响应,而不仅仅是状态码200的常规响​​应和包含文本的页面这是一个404? – Guffa 2010-11-25 22:40:20

+0

@cambraca同样在这里。使用Firefox 3.6.12和Firebug进行测试。 – aefxx 2010-11-25 22:41:24

回答

13

还可以做什么用$ .ajaxError功能,像这样

$("#message").ajaxError(function(event, request, settings){ 
     $(this).show(); 
     $(this).append("<li>Error requesting page " + settings.url + "</li>"); 
    }); 
1

我有一个非常类似的结果/问题。底线是我没有确保我的URL在ajax函数的数据部分中不包含任何相同的参数名称。


的原因对我来说,是我生成与PHP代码的URL来获得一个网址

pines_url('com_referral', 'sendhttprequest') 

其输出到一个URL参数

option=com_referral 

和参数

action=sendhttprequest 

我的BIG问题在于我还试图在AJAX函数的数据部分发送参数“操作”。

data: {"action": "getpoints"} 

所以第二个行动是压倒一切的是“getpoints”不存在,但棘手的部分是,萤火虫显然不会告诉我getpoints的URL,它会告诉我网址为sendhttprequest。

希望没有让人困惑,但我也希望这可以帮助有类似问题的其他人!

1

如果在指定的时间内没有响应,那么添加超时值将导致错误回调运行。回调为5000时,如果jsonp请求在5秒内没有响应(即404s),那么错误回调将运行。

$.ajax({ 
    type: 'get', 
    timeout: 5000, 
    url: 'url: 'https://admin.instantservice.com/resources/smartbutton/5702/10945/available.gif?' + Math.floor(Math.random()*10001), 
    success: function(data, textStatus, XMLHttpRequest){ 
     console.log('Error: ' + textStatus); 
    }, 
    error:function (xhr, ajaxOptions, thrownError){ 
     alert(xhr.status); 
     alert(xhr.statusText); 
     alert(xhr.responseText); 
    } 
}); 
0

我不知道为什么,但如果你使用的链接.fail方法,错误是正确捕获即使它是一个不同的站点:

$.ajax({ 
    type: 'get', 
    url: 'http://example.com', 
    success: function(data, textStatus, XMLHttpRequest){ 
     console.log('Error: ' + textStatus); 
     } 
    }).fail(function (xhr, ajaxOptions, thrownError) { 
     alert(xhr.status); 
     alert(xhr.statusText); 
     alert(xhr.responseText); 
    });