Транспорт - это объект, который предоставляет два метода, send
и abort
, которые используются внутренне $.ajax()
для отправки запросов. Транспорт - это наиболее продвинутый способ улучшить $.ajax()
, и следует использовать его только в крайнем случае, когда предварительная фильтрация и конвертеры недостаточны.
Поскольку каждый запрос требует свой собственный экземпляр транспортного объекта, транспорты не могут быть зарегистрированы непосредственно. Поэтому вы должны предоставить функцию, которая возвращает транспорт вместо этого.
Пример 1: Основы .ajaxTransport()
Для начала работы с технологией Ajax в jQuery необходимо ознакомиться с методом .ajaxTransport(). Этот метод позволяет настраивать отправку и получение запросов. Пример кода:
$.ajaxTransport( function( options, originalOptions, jqXHR ) {
if ( /* проверка на то, что нужно использовать этот транспорт */ ) {
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
}
});
Пример 2: .ajaxTransport() с транспортом Long Polling
Long Polling - это технология, которая позволяет связать сервер и клиент, чтобы сервер мог отправлять данные на клиентскую сторону в режиме реального времени. Пример кода:
$.ajaxTransport( "long-polling", function( options, originalOptions, jqXHR ) {
// тут настройки транспорта Long Polling
var pollInterval = setInterval(function() {
$.ajax({
// тут осуществляется отправка запроса
}).done(function(data) {
// тут обрабатывается полученный ответ
if (/* проверка на окончание работы */) {
clearInterval( pollInterval );
completeCallback( /* что вернуть по итогам работы */ );
}
});
}, /* интервал */);
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
});
Пример 3: .ajaxTransport() с транспортом Comet
Comet - это технология, которая позволяет связать сервер и клиент, чтобы сервер мог отправлять данные на клиентскую сторону в режиме реального времени. Пример кода:
$.ajaxTransport( "comet", function( options, originalOptions, jqXHR ) {
// тут настройки транспорта Comet
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
});
Пример 4: .ajaxTransport() с транспортом Server-Sent Events
Server-Sent Events - это технология, которая позволяет серверу отправлять данные на клиентскую сторону в режиме реального времени. Пример кода:
$.ajaxTransport( "sse", function( options, originalOptions, jqXHR ) {
// тут настройки транспорта Server-Sent Events
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
});
Пример 5: .ajaxTransport() с транспортом WebSockets
WebSockets - это технология, которая предоставляет полнодуплексное взаимодействие между сервером и клиентом. Пример кода:
$.ajaxTransport( "websocket", function( options, originalOptions, jqXHR ) {
// тут настройки транспорта WebSockets
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
});
Пример 6: .ajaxTransport() с транспортом JSONP
JSONP - это технология, которая позволяет получать данные с другого домена. Пример кода:
$.ajaxTransport( "jsonp", function( options, originalOptions, jqXHR ) {
// тут настройки транспорта JSONP
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
});
Пример 7: .ajaxTransport() с транспортом XDomainRequest
XDomainRequest - это технология, которая позволяет получать данные с другого домена. Пример кода:
$.ajaxTransport( "xdomain-request", function( options, originalOptions, jqXHR ) {
// тут настройки транспорта XDomainRequest
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
});
Пример 8: .ajaxTransport() с транспортом CORS
CORS - это технология, которая позволяет получать данные с другого домена. Пример кода:
$.ajaxTransport( "cors", function( options, originalOptions, jqXHR ) {
// тут настройки транспорта CORS
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
});
Пример 9: .ajaxTransport() с транспортом XMLHTTPRequest
XMLHTTPRequest - это технология, которая позволяет отправлять и получать данные в формате XML. Пример кода:
$.ajaxTransport( "xmlhttprequest", function( options, originalOptions, jqXHR ) {
// тут настройки транспорта XMLHTTPRequest
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
});
Пример 10: .ajaxTransport() с транспортом WebSocket
WebSocket - это технология, которая предоставляет полнодуплексное взаимодействие между сервером и клиентом. Пример кода:
$.ajaxTransport( "websocket", function( options, originalOptions, jqXHR ) {
// тут настройки транспорта WebSocket
return {
// тут настройки транспорта
send: function( headers, completeCallback ) {
// тут осуществляется отправка запроса
},
abort: function() {
// тут прерывается отправка запроса
}
};
});
Заключение
Таким образом, .ajaxTransport() в jQuery - это очень полезный метод, который позволяет настраивать отправку и получение запросов.