Задать вопрос
doniyorbekm
@doniyorbekm
Yii-шник

Как проверить что запрос выполняется дольше Х секунд?

Привет всем!
Есть ajax-запрос:
$.ajax({
url: "test.php", 
type: 'get',
success: function(result){
        alert(123);
    }});

Иногда (не всегда) ответ от PHP скрипта приходит за 10-15 секунд, что очень долго. Хотелось бы сделать логику проверки времени запроса: если запрос длится более 3 секунд - считать что php скрипт вернул false;
Как средствами jQuery проверить, выполняется ли ajax запрос более 3-х секунд?
  • Вопрос задан
  • 426 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Установите timeout
$.ajax({
url: "test.php", 
type: 'get',
timeout: 3000, // 3 сек
success: function(result){
        alert(123);
    },
error: function() {
// тут выполнится, если случилась ошибка или прошло 3сек
}});


Но мне кажется, 3сек это довольно мало. Для пользователей с плохим интернетом, например мобильным, норма ожидания часто 5-10сек.
Ответ написан
Комментировать
$.ajax({
    url: "test.php", 
    type: 'get',
    timeout: 3000,
    success: function(result){
        alert(123);
    },
    error: function(jqxhr, status){
        if(status === "timeout"){
            alert("Cлишком долгий ответ");
        }
    }   
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
См. параметр timeout в настройках jQuery.ajax:


timeout
Type: Number
Set a timeout (in milliseconds) for the request. A value of 0 means there will be no timeout. This will override any global timeout set with $.ajaxSetup(). The timeout period starts at the point the $.ajax call is made; if several other requests are in progress and the browser has no connections available, it is possible for a request to time out before it can be sent. In jQuery 1.4.x and below, the XMLHttpRequest object will be in an invalid state if the request times out; accessing any object members may throw an exception. In Firefox 3.0+ only, script and JSONP requests cannot be cancelled by a timeout; the script will run even if it arrives after the timeout period.
Ответ написан
Комментировать
Stimulate
@Stimulate
могу
$.ajax({
url: "test.php", 
type: 'get',
success: function(result){
    alert(123);
},
error: function(){
    alert('timeout');
},
 timeout: 3000
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы