Тайм-аут JQuery не выполняется - PullRequest
0 голосов
/ 26 января 2009

У меня есть js-клиент с JQuery, этот js вызывает страницу (GET HTTP) и устанавливает время ожидания. Цель тайм-аута: «сделать что-то, если сервер не отвечает». Если я использую веб-сервер Apache для управления страницей, время ожидания истекает. Если я использую IIS 6.0, тайм-аут «пропускается» и попытка страницы (во всяком случае) ответа сервера. Это скрипт:

// на стороне клиента

$.ajax({
    type: "GET",
    url: "some.php",
    data: "name=John&location=Boston",
    timeout: 5000
    success: function(msg){
        alert( "Data Saved: " + msg );
    },
    error: function(request, errorType, errorThrown){
        alert("opppsssss .... ");
    }
}); 

Полагаю, что это IIS ... правильно? или я сделал ошибку в коде JQuery?

С наилучшими пожеланиями

Доменико

Ответы [ 2 ]

1 голос
/ 26 января 2009

Как упоминал Паоло в комментарии, вы пропускаете запятую после объявления тайм-аута. У меня совсем недавно была ситуация, когда пропущенная в объявлении объекта запятая приводила к тому, что IE давил скрипт и не запускал его должным образом (хотя у firefox не было проблем с его запуском).

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

0 голосов
/ 27 января 2009

Спасибо за ответ, я заканчиваю вопрос:)

Код сервера:

// backend some.php

<? </p>

// имитировать длинное задание

сна (10); // спать 10 секунд

// отправить ответ

эхо "некоторые тестовые данные";

? >

Извините, ошибка запятой - это ошибка "вырезать и вставить".

Проблема заключается в том, что по истечении времени ожидания диалоговое окно с сообщением об ошибке не отображается, поскольку соединение с сервером не прерывается по истечении времени ожидания, поэтому сервер (медленно) отвечает.

У вас есть идея, потому что соединение с сервером не прерывается?

...