Как установить максимальное время выполнения для AJAX post с помощью jQuery?

есть ли способ указать максимальное время выполнения сообщения ajax на сервере, поэтому, если сервер не отвечает, продолжайте пытаться в течение 10 секунд, а затем продолжайте с остальной частью кода??

Function doajaxPost(){
    var returned_value="";

    // #############I NEED THIS CODE TO TRY TO POST THE DATA TO THE SERVER AND KEEP
    // #############TRYING FOR 10 SECONDS AND THEN CONTINUE WITH THE REST OF THE CODE.
        jQuery.ajax({
            url: 'ajaxhandler.php',
            success: function (result) {                               
                returned_value=result;
            },
            async: false
        });
    // ###################################################

    alert(returned_value);

    some other code
    .
    .
    .           
 }

4 ответов


использовать timeout:

jQuery.ajax({
    url: 'ajaxhandler.php',
    success: function (result) {                               
        returned_value=result;
    },
    timeout: 10000,
    async: false
});
, alert(returned_value); будет выполняться сразу после вашего вызова (не будет ждать завершения вызова).

документация API jQuery сообщает, как установить "тайм-аут".

http://api.jquery.com/jQuery.ajax/

в то время как другие ответы здесь верны, научиться проверять документацию для себя более ценно, чем знать только этот ответ.


вы можете установить значение тайм-аута для вашего запроса ajax.

автоотключение

установить тайм-аут (в миллисекундах) для запроса. Это переопределит любой глобальный тайм-аут с $.метода ajaxsetup(). Начинается период ожидания в точке $.ajax вызов сделан; если несколько других запросов находятся в прогресс и браузер не имеет доступных подключений, это возможно на запрос времени, прежде чем он может быть отправлен. В jQuery 1.4.x и ниже XMLHttpRequest объект будет в недопустимом состоянии, если время ожидания запроса; доступ к любым членам объекта может вызвать исключение. Только в Firefox 3.0+ запросы script и JSONP не могут быть отменено таймаутом; скрипт будет работать, даже если он прибудет после таймаут.

вот пример:

$.ajax({
   url: "ajaxhandler.php",
   ...
   timeout: 10000,
   ... 
});

установить тайм-аут (в миллисекундах) для запроса. Это переопределит любой глобальный тайм-аут, установленный с помощью $.метода ajaxsetup(). Период ожидания начинается с точки $.вызов ajax выполняется; если выполняется несколько других запросов и браузер не имеет доступных подключений, возможно время ожидания запроса до его отправки. В jQuery 1.4.x и ниже объект XMLHttpRequest будет находиться в недопустимом состоянии, если истечет время ожидания запроса; доступ к любым членам объекта может вызвать исключение. Только в Firefox 3.0+ запросы script и JSONP не могут быть отменены таймаутом; скрипт будет работать, даже если он прибывает после периода таймаута.