Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2012, 14:04
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

AJAX запрос...
Как заставить браузер игнорировать действия пользователя при выполнении ajax?

Синхронные запросы почему-то не блокируют браузер, возможно потому что ajax запрос выполняется долго..

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

request = new window.XMLHttpRequest();
params = 'name=' + encodeURIComponent(key);
request.open('GET', "check.php?" + params, true);
request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");

request.onreadystatechange = function () {
    if (request.readyState === 4 && request.status === 200) {
////  .............
    }
};


С ajax никогда работать не приходилось до этого(((
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2012, 14:16
Аспирант
Отправить личное сообщение для Sanda Посмотреть профиль Найти все сообщения от Sanda
 
Регистрация: 12.10.2012
Сообщений: 90

Обычного флага не хватит?

var isRequestProcessed = false;
...

if (!isRequestProcessed) {
  isRequestProcessed = true;
  request = new window.XMLHttpRequest();
  //..
  request.onreadystatechange = function () {
    //..
    isRequestProcessed = false;
  }
}
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2012, 14:24
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Sanda,

вот не знаю почему, но не люблю я использовать флаги. Мне кажется это хаком, возможно я не прав))

А разве по другому никак нельзя? (главное чтоб работало в ie8 -9 ниже не надо)
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2012, 14:41
Аспирант
Отправить личное сообщение для Sanda Посмотреть профиль Найти все сообщения от Sanda
 
Регистрация: 12.10.2012
Сообщений: 90

Сообщение от dmitry111 Посмотреть сообщение
Как заставить браузер игнорировать действия пользователя при выполнении ajax?

Синхронные запросы почему-то не блокируют браузер, возможно потому что ajax запрос выполняется долго..

С ajax никогда работать не приходилось до этого(((
Таки обещают, что request.open('GET', "check.php?" + params, true) задаёт асинхронный запрос (ссылка)
Если нужен синхронный, надо ставить false.

Ещё можно, например, вешать перекрывающий полупрозрачный div с надписью 'Loading...'
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2012, 15:17
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от Sanda
Таки обещают, что request.open('GET', "check.php?" + params, true) задаёт асинхронный запрос (ссылка)
Если нужен синхронный, надо ставить false.
синхронный почему-то не срабатывает (пробовал в firefox)

Сообщение от Sanda
Ещё можно, например, вешать перекрывающий полупрозрачный div с надписью 'Loading...'
этот не подходит по дизайну ((
хотя если сделать полностью прозрачным то можно, но это уж на самый крайний случай!



Хотелось бы именно средствами js.

Последний раз редактировалось dmitry111, 03.12.2012 в 15:20.
Ответить с цитированием
  #6 (permalink)  
Старый 03.12.2012, 15:20
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

dmitry111,
Сообщение от dmitry111
вот не знаю почему, но не люблю я использовать флаги. Мне кажется это хаком, возможно я не прав))
не прав
Ответить с цитированием
  #7 (permalink)  
Старый 03.12.2012, 15:34
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Dim@,

просто я как думаю, что каждая переменная должна иметь значение, которое будет использоваться по назначению

в iQuery используются флаги?

У Фленагана нет ни строчки про флаги, я не нашел

Последний раз редактировалось dmitry111, 03.12.2012 в 15:38.
Ответить с цитированием
  #8 (permalink)  
Старый 03.12.2012, 16:12
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

dmitry111,
флаг - переменная которая используется по значению
Сообщение от dmitry111
в iQuery используются флаги?

У Фленагана нет ни строчки про флаги, я не нашел
это настолько базовая вещь, но встречается не часто
Ответить с цитированием
  #9 (permalink)  
Старый 03.12.2012, 21:04
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Dim@,

да? тогда буду решать с помощью флага!
Ответить с цитированием
  #10 (permalink)  
Старый 03.12.2012, 21:09
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

dmitry111,
Сообщение от dmitry111
да?
да
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX запрос в Internet Explorer срабатывает через раз nikolayseo jQuery 5 13.11.2012 00:13
Как можно кешировать Ajax запрос ? saturn AJAX и COMET 5 27.10.2012 14:48
Не могу сделать ajax запрос jazzz13 AJAX и COMET 4 17.05.2012 16:31
Составить Ajax запрос и json LASSO jQuery 1 16.02.2012 03:36
ajax запрос с подгружемным js HelpeR AJAX и COMET 1 27.10.2008 12:44