Вопрос по $.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"}), это означает, что запрос сразу же уходит на сервер. Поэтому все, что мы пишем после уже никак не сможет повлиять на этот запрос. Так почему же тогда говориться, что основной запрос не будет выполнен, пока не выполнится второстепенный? |
Развернем вопрос в другую плоскость... Нужно сделать цепочку запросов, где первый запрос получает 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-шник, но данные-то все равно не обновлены }) |
Из-за кеширования обычно делают добавку к url
$.ajax(url+'?'+Math.random(), {dataType: "json"}) |
Цитата:
|
Часовой пояс GMT +3, время: 05:56. |