<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>Test</title>
<meta name="content-type" content="charset=utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script>
$(function () {
$('#button').click(function() {
$('#div').html( $('#div').html() + "идет загрузка...<br>");
$.ajax({
url : '/',
type : 'GET',
timeout : 5000,
success : function (j) {
$('#div').html( $('#div').html() + "успешно :)<br>")
},
error : function (XMLHttpRequest, textStatus, errorThrown) {
var errtext;
if(textStatus == 'timeout') {
errtext = 'ошибка - вышло время ожидания ответа сервера (5 сек.)';
} else if (XMLHttpRequest.status || XMLHttpRequest.statusText) {
//XMLHttpRequest.status || XMLHttpRequest.statusText вылетает без сообщения об ошибке
errtext = 'ошибка - ' + XMLHttpRequest.status + ' '+ XMLHttpRequest.statusText;
} else
errtext = 'ошибка'
$('#div').html( $('#div').html() + errtext + '<br>')
}
});
});
});
</script>
</head>
<body>
<button id="button">начать загрузку</button>
<div id="div"></div>
</body>
</html>
Видимо дело все таки не в JQuery. FireFox ломается на выражении XMLHttpRequest.status || XMLHttpRequest.statusText без сообщения об ошибке. Происходит это когда сервер погашен. При этом Google Chrome работает, Opera - тоже. FireFox 3.6.12 for Ubuntu.
Похоже придется обернуть XMLHttpRequest.status || XMLHttpRequest.statusText в try