02.08.2018, 13:27
|
Профессор
|
|
Регистрация: 16.06.2013
Сообщений: 172
|
|
Отловить ajax запрос.
Всем привет.
Вопрос такой возник.
Можно ли отловить ajax запрос на странице и добавить в него параметров? GET или POST.
Отловить то понятно - а че дальше делать?
$(document).on('ajaxSend', function(e){
console.log(e);
});
Вывел в консоль, там параметров целая гора.
Буду признателен за помощь.
|
|
02.08.2018, 14:06
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от Bond
|
Можно ли отловить ajax запрос на странице и добавить в него параметров? GET или POST.
|
Слушая event на document - вряд ли.
Можно в глобальных настройках jq.ajax установить в кач-ве опции beforeSend свой обработчик, в котором можно изменить параметры запроса.
Однако если опция beforeSend будет установлена при вызове метода, то глобальный обработчик, вроде как, будет проигнорирован.
|
|
02.08.2018, 14:23
|
Профессор
|
|
Регистрация: 16.06.2013
Сообщений: 172
|
|
Nexus,
а как можно в beforeSend изменить параметры запроса?
По сути мне не обязательно глобально его устанавливать, я могу и локально втулить.
Вопрос то вообще в чем - у меня есть таблица Dynatable - вот она отправляет ajax запросы для загрузки данных - при загрузке страницы, при пагинации и т.д. Так вот мне нужно при каждом таком запросе добавлять параметры в урл - каждый запрос они могут быть разные. И я не могу отслеживать все события которые инициируют ajax запрос. А евент хуков в этой таблице как кот наплакал - init, удачный запрос, апдейт и еще парочка, короче все срабатывают после загрузки данных.
|
|
02.08.2018, 14:29
|
Профессор
|
|
Регистрация: 16.06.2013
Сообщений: 172
|
|
Nexus,
А нет, сорри. Я могу втулить beforeSend, но он не такой как в обычном ajax - он не передает функции параметры, но сама функция срабатывает. А в обычном запросе все норм.
|
|
02.08.2018, 14:37
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Bond,
Сообщение от Bond
|
А нет, сорри. Я могу втулить beforeSend, но он не такой как в обычном ajax - он не передает функции параметры, но сама функция срабатывает. А в обычном запросе все норм.
|
не понял.
Изменить тип запроса:
$.ajaxSetup({
beforeSend:function(xhr,settings){
this.type='POST';
}
});
$.ajax(location.href,{type:'get'});
|
|
02.08.2018, 17:38
|
Профессор
|
|
Регистрация: 16.06.2013
Сообщений: 172
|
|
Nexus,
Все таки не срабатывает так у меня.
Вот такая у меня засада:
var dynatable = $('#tblLeads').dynatable({
// Параметры ajax запроса - по сути такие же как в $.ajax
dataset: {
ajax: true,
beforeSend: updateUrl,
ajaxUrl: '/dynatable-operation.html',
ajaxCache: null,
ajaxOnLoad: true,
ajaxMethod: 'GET',
ajaxDataType: 'json',
ajaxData: {},
records: []
});
const updateUrl = function (e, a) {
$.ajaxSetup({
beforeSend: function (xhr, settings) {
this.type = 'POST';
}
});
}
Если ваш пример запустить при загрузке страницы то - да он меняет в данном случае тип.
но если поставить в функцию updateUrl, то не работает. Сама функция срабатывает, а вот параметры запроса не меняются.
Смысл в то что мне при отправке запроса нужно добавлять данные которые есть в данный момент, а не те которые были при загрузке страницы
Последний раз редактировалось Bond, 02.08.2018 в 17:43.
|
|
02.08.2018, 22:40
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Bond, а так?
$('#tblLeads').dynatable({
// Параметры ajax запроса - по сути такие же как в $.ajax
dataset: {
ajax: true,
beforeSend: function(xhr, settings) {
this.type = 'POST';
},
ajaxUrl: '/dynatable-operation.html',
ajaxCache: null,
ajaxOnLoad: true,
ajaxMethod: 'GET',
ajaxDataType: 'json',
ajaxData: {},
records: []
});
});
|
|
03.08.2018, 00:15
|
Профессор
|
|
Регистрация: 16.06.2013
Сообщений: 172
|
|
Nexus,
Так тоже не пашет. В любом случае спасибо за подсказки.
Я решил по другому - немного костыльно правда.
При клике на пагинацию пока плагин таблицы думает и решает свои дела прежде чем отправить ajax, паралельно исполняется мой клик и он по шустрому пишет параметры в ajaxData ну а они свою очередь добавляются в урл как обычные GET.
Конечно так делать нельзя, но сколько раз пробовал - отказа не было ни разу - всегда мой клик успевает записать параметры прежде чем плагин отправит запрос.
|
|
|
|