Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.04.2015, 15:09
Новичок на форуме
Отправить личное сообщение для sanns Посмотреть профиль Найти все сообщения от sanns
 
Регистрация: 04.04.2015
Сообщений: 3

выполнение двух асинхронных .load() -запросов, и перезагрузка страницы по завершении
выполнение двух асинхронных .load() -запросов, и перезагрузка страницы по завершении

Здравствуйте,
прошу помощи

Есть задача сделать по нажатию одной кнопки:
1. отправку данных на сервер через ajax, и
2. перезагрузка страницы, когда от сервера пришел ответ.
Это легко. Но есть вторая кнопка, по нажатию на которую надо сделать
1. все то же , что по первой кнопке, плюс
2. еще один запрос на сервер через ajax.
3. получить ответы от обоих запросов, и только тогда перезагружать страницу.

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

примерный код сейчас:

$(document).on('click', "a#update", function () {

$("#results_operation1").load("index.php",
{
type: "update",
},
function(){document.location.reload();}
);

});


$("a#status_id").click(function() {


$("a#update").click();


$("#results_operation2").load("index.php",
{action: "update_status"
}, function(){document.location.reload();});
});

Спасибо за помощь!

Последний раз редактировалось sanns, 04.04.2015 в 15:23.
Ответить с цитированием
  #2 (permalink)  
Старый 04.04.2015, 19:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Либо выполнять последовательно запросы, то есть после ответа на первый производить второй, либо выполнять задачу одним запросом.
Ответить с цитированием
  #3 (permalink)  
Старый 05.04.2015, 12:29
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Увеличивать счётчик при отправке, уменьшать при получении, по достижению нуля перегружать?
Ответить с цитированием
  #4 (permalink)  
Старый 05.04.2015, 19:13
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от theKingOfJava
 
Регистрация: 31.03.2015
Сообщений: 113

Вот такой вариант:
<html>
<head>
</head>
<body>

<button id="b1">1 response </button>
<button id="b2">2 response </button>


<script>



Request={
 counter: 0,
 create: function(){
  var o=Object.create(this)
  o.request=new XMLHttpRequest()
  return o
 },
 open: function(){this.request.open("GET", this.url); return this},
 send: function(){this.request.send(null); return this},
 set: function(){
  this.request.onreadystatechange=function(){
    if(this.request.readyState==4&&this.request.status==200) {
      this.onResponse()
      this.step()
   }
  }.bind(this)
  return this
 },
 step: function(){
  if(this.limit<=this.counter) return this.onEnd()
  this.counter++
  this.create().open().set().send()
 },
 start: function(){this.step()}
}

makeRequests=function(limit){
 return function(){
    var request=Request.create()
    request.url="http://myhost/foo"
    request.onResponse=function(){doSomethingWith(this.request.responseText)}
    request.onEnd=function(){location.reload()},
    request.limit=limit
    request.start()
}}

b1.onclick=makeRequests(1)
b2.onclick=makeRequests(2)


</script>
</body>
</html>

Последний раз редактировалось theKingOfJava, 05.04.2015 в 19:15.
Ответить с цитированием
  #5 (permalink)  
Старый 09.04.2015, 20:12
Новичок на форуме
Отправить личное сообщение для sanns Посмотреть профиль Найти все сообщения от sanns
 
Регистрация: 04.04.2015
Сообщений: 3

Сообщение от vasa_c Посмотреть сообщение
Увеличивать счётчик при отправке, уменьшать при получении, по достижению нуля перегружать?
Что если счетчик увеличится, и успеет уменьшиться до того, как увеличится второй раз? Страница перезагрузится так и не дойдя до второго запроса?
Ответить с цитированием
  #6 (permalink)  
Старый 09.04.2015, 20:18
Новичок на форуме
Отправить личное сообщение для sanns Посмотреть профиль Найти все сообщения от sanns
 
Регистрация: 04.04.2015
Сообщений: 3

Сообщение от laimas Посмотреть сообщение
Либо выполнять последовательно запросы, то есть после ответа на первый производить второй, либо выполнять задачу одним запросом.
Последовательно? Вставить второй запрос в коллбэк от первого? Но я так не могу Иначе по нажатию на первую кнопку, он всегда будет делаться, а мне надо только по нажатию на вторую. Или я что-то не понял?
Ответить с цитированием
  #7 (permalink)  
Старый 10.04.2015, 03:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение скрипта и перезагрузка страницы Laroux Events/DOM/Window 2 19.03.2014 16:26