Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.12.2012, 00:12
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Вопрос по $.pipe()
Из мануала:
Цепочка ajax-запросов. Перед тем, как выполнить основной запрос (по адресу url_1), будет произведен предварительный запрос идентификатора текущего пользователя (по адресу url_2)
var request = $.ajax(url_1, {dataType: "json"}),
chained = request.pipe(function( data ){
  return $.ajax(url_2, {data: {user:data.userId} });
});
 
chained.done(function(data){
  // data будет содержать ответ сервера на второй запроса (по url_2)
});

Не пойму. Если мы пишем var request = $.ajax(url_1, {dataType: "json"}), это означает, что запрос сразу же уходит на сервер. Поэтому все, что мы пишем после уже никак не сможет повлиять на этот запрос. Так почему же тогда говориться, что основной запрос не будет выполнен, пока не выполнится второстепенный?
Ответить с цитированием
  #2 (permalink)  
Старый 28.12.2012, 10:13
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Развернем вопрос в другую плоскость... Нужно сделать цепочку запросов, где первый запрос получает id-шник, а второй запрос по нему обновляет данные. Дедовским методом это делается так:
$.ajax(actionUrl, {
    'data': {'type': 'getId'},
    'success': function (data1) {            
             $.ajax(actionUrl, {
                 'data': {'type': 'updateInfo', 'id': data.id},
                 'success': function (data2) {
                     alert(data2.complete)
                 }
            })
        }
})

А вот с pipe() что-то не получается...
var updateInfo = $.ajax(actionUrl, {
     'data': {'type': 'updateInfo', 'id': data.id}
})
var getId = updateInfo.pipe(function (data2) {
    return $.ajax(actionUrl, {
        data: {'type': 'getId'}
    }
})
getId.done(function (data1) {
    alert(data1.id) //Получили id-шник, но данные-то все равно не обновлены
})

Последний раз редактировалось Shitbox2, 28.12.2012 в 10:16.
Ответить с цитированием
  #3 (permalink)  
Старый 28.12.2012, 12:13
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Из-за кеширования обычно делают добавку к url
$.ajax(url+'?'+Math.random(), {dataType: "json"})
Ответить с цитированием
  #4 (permalink)  
Старый 29.12.2012, 05:43
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Сообщение от Deff Посмотреть сообщение
Из-за кеширования обычно делают добавку к url
$.ajax(url+'?'+Math.random(), {dataType: "json"})
Если установить в $.ajax параметр cache в false, то все что надо само допишется
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по each() и перебору строк таблицы battrack jQuery 1 09.02.2012 14:30
вопрос про возможности JS для рисования и анимации macdack Библиотеки/Тулкиты/Фреймворки 3 15.07.2011 00:13
Я как ответить на вопрос - есть ли жизнь на других планетах? TicTac Оффтопик 5 28.04.2011 04:29
Вопрос по замыканиям Goodfella Общие вопросы Javascript 20 09.03.2011 01:21
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49