powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Цепочка аякс-запросов.
18 сообщений из 18, страница 1 из 1
Цепочка аякс-запросов.
    #38095743
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сделать цепочку запросов, где первый запрос получает id-шник, а второй запрос по нему обновляет данные. Так работает:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$.ajax(actionUrl, {
    'data': {'type': 'getId'},
    'success': function (data1) {            
             $.ajax(actionUrl, {
                 'data': {'type': 'updateInfo', 'id': data.id},
                 'success': function (data2) {
                     alert(data2.complete)
                 }
            })
        }
})


Пытаюсь сделать с pipe(), но что-то туплю...
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var updateInfo = $.ajax(actionUrl, {
     'data': {'type': 'updateInfo', 'id': data.id}
})
var getId = updateInfo.pipe(function (data) {
    return $.ajax(actionUrl, {
        data: {'type': 'getId'}
    }
})
getId.done(function (data1) {
    alert(data1.id) //Получили id-шник, но данные-то все равно не обновлены
})


Как правильно?
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38095790
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Х работает, Y не работает, так как же правильно, X или Y? Вопрос на охренеллион долларов.
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38095816
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2, если через jQuery, то используйте then() или done(). Почему вдруг pipe()?

jQuery Deferred Object (подробное описание)
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38095824
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2, и Вы ещё зачем-то поменяли местами аргументы 'data' при вызове цепочки через pipe().
То есть сначала обновляете данные, а затем получаете id-шник
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38095829
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имел в виду как правильно сделать, чтобы Y заработал

Раза 3 уже эту статью читал. Просто в pipe() даже пример есть для создания цепочек запросов, поэтому и подумал, что он под это заточен.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var getId = $.ajax(actionUrl, {
    'data': {'type': 'getId'}
})
getId.done(function (data1) {
    $.ajax(actionUrl, {
        'data': {'type': 'updateInfo', 'id': data1.id},
        'success': function (data2) {
            alert(data2.complete)
        }
    })
})

то же самое, что и первый вариант, только success вынесли. Идея, когда первой запускается глобальная функция (updateInfo), которая при необходимости подкачивает для себя данные, нравится больше, поэтому и копал pipe()
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38095858
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2, то есть читали Вы документацию, читали, но так и не поняли, что doneFilter, переданный в pipe(), вызывается когда deferred is resolved (выполнен)?
Вы хотите первой запустить глобальную функция (updateInfo), а когда она выполнится подкачать ей данные?
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38095877
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, все верно! По логике, конечно, вызывается когда deferred is resolved. Я бы не стал браться за pipe(), если бы не пример из документации не гласил:
авторЦепочка ajax-запросов. Перед тем, как выполнить основной запрос (по адресу url_1), будет произведен предварительный запрос идентификатора текущего пользователя (по адресу url_2). И уже после получения id, будет выполнено основной запрос , в данных которому будет фигурировать полученный идентификатор:
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38095949
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2, что это за документация такая? Ссылку в студию! Хотелось бы узнать каким образом failFilter выполнится перет тем как произойдёт fail
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38095960
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38095982
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2, найдите-ка мне оригинал на официальном сайте.
Это не перевод, это придумано от себя и перепутаны местами url_1 и url_2 в тексте "перевода".

произведен предварительный запрос идентификатора текущего пользователя (по адресу url_2):
Код: javascript
1.
$.ajax(url_2, {data: {user:data.userId} });

Вас разве не смущает тот факт, что userId передаётся по адресу url_2? Интересно, откуда взялся объект data c userId в нём?
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38096010
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял, Вам нужно что-то типа этого:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
function update(data) {
  var request;

  if (data.id) {
    request = $.Deferred();
  } else {
    request = $.ajax(actionUrl, { 'data' : { 'type' : 'getId'} });
  }

  var chained = request.pipe(function(data) {
    return $.ajax(actionUrl, { 'data' : { 'type' : 'updateInfo', 'id' : data.id } });
  });

  chained.done(function(data) { alert(data.complete); });

  if (request.state() != 'pending') {
    request.resolve(data);
  }
}


P.S.: и старайтесь постить код без синтаксических ошибок
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38096017
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смущает. Хех, вот понадейся на русский источник... Но пример они правильно скопипастили
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var request = $.ajax( url, { dataType: "json" } ),
    chained = request.pipe(function( data ) {
      return $.ajax( url2, { data: { user: data.userId } } );
    });

chained.done(function( data ) {
  // data retrieved from url2 as provided by the first request
});

Есть подозрение, что data.userId это ответ на запрос url :)
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38096973
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2,

А почему просто нельзя?
Код: javascript
1.
$ajax(.....).done(function(data1){ $ajax(....); });
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38097036
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp, смотрим внимательно: 13699183
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38097055
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2, а на фига вообще эти танцы с бубном? Не проще ле на сервере выбрать id перед update, если первый отсутствует?
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38097526
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAsp, смотрим внимательно: 13699183

читал 1й пост - я ж не телепат что где-то в 100м задача переопределена))
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38098346
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне больше такой стиль нравится

Код: javascript
1.
2.
3.
server.getSomeId(fork(app.onError, function(id){
  server.updateSomeInfo(someData, fork(app.onError))
})
...
Рейтинг: 0 / 0
Цепочка аякс-запросов.
    #38098347
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне больше такой стиль нравится

Код: javascript
1.
2.
3.
4.
5.
server.getSomeId(fork(app.onError, function(id){
  server.updateSomeInfo(someData, fork(app.onError, function(){
    all done do other stuff ...
  }))
})
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Цепочка аякс-запросов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]