Недавно я обнаружил ошибку об истечении времени ожидания.
См. Код ниже.
- Время ожидания jQuery: 5000 мс
- Сон сервлета: 10000 мс
Javascript на стороне клиента
$.ajaxSetup({
url: "http://localhost:8888/{mydomain}",
timeout : 5000,
error:function (xhr, textStatus, thrownError){
switch(xhr.status) {
case 0 :
$('#msg').append("0");
break;
case 404:
$('#msg').append("404 ERROR.");
break;
case 500:
$('#msg').append("500 ERROR.");
break;
case 408:
$('#msg').append("408 ERROR.");
break;
default :
$('#msg').append(xhr.status);
break;
}
}
});
$(function() {
$.ajax({
type: "GET",
dataType:"JSON",
data:{send a some data},
success:function(response){
alert(response);
}
})
});
Java-процесс
@Path("/{mydomain}")
public class DummyResource {
@GET
@Produces(MediaType.TEXT_HTML)
public String getMethod() throws Exception {
try {
Thread.sleep(10000);
} catch(InterruptedException ie) {
throw new WebApplicationException(Response.Status.SERVICE_UNAVAILABLE);
}
return "hello!";
}
}
Но ошибка в Safari и Firefox различна.
Safari (ошибка времени ожидания: я думаю, этот результат верный.)
> GET //localhost:8888/{mydomain} Aborted
Firefox (успех, но произошла ошибка)
> GET //localhost:8888/{mydomain} 200 OK 10.01s
uncaught exception: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: //localhost:8888/{mydomain}/ajax.html :: anonymous :: line 20" data: no]
Информация о моей системе
MacOSX: 10.6.5
Браузер: Safari 5.0.3, Firefox 3.6.8