pycolle Ответов: 2

После того как мой javascript отрисовал страницу Я хотел бы перезвонить серверу чтобы что то было записано в его лог файл


Давайте представим, что у меня есть страница поиска с кнопкой поиска.
Когда я нажимаю на него, java-программа в методе processRequest выполняет запрос к БД, подготавливает данные и пересылает результат через RequestDispatcher. В java-программе я могу написать некоторую инструкцию для записи в файл журнала даты, когда она была вызвана (дата начала), и в последней части, когда она закончила свое действие (дата остановки) ...
..
Но !!!
..
представьте себе, что рендеринг на стороне клиента с помощью javascript выполняется плохо и занимает чертовски много времени. .. у пользователя будет ощущение плохой работы, тогда как в моем лог-файле дата начала и дата остановки указывают всего на 1 секунду лечения.
..
SO
....
Есть ли способ, чтобы в конце рендеринга javascript я снова вызывал в беззвучном режиме сервер, чтобы в его лог-файле он просто добавил еще одну дату, сообщающую мне, когда пользователь сможет работать (ДАТА ГОТОВНОСТИ)
.
Если я хочу измерить реальную производительность конечного пользователя моего приложения, то теперь я смогу сравнить дату готовности с датами остановки и запуска, а также получить представление о том, сколько времени прошло между тем, как сервер закончил свою работу, и сетевым возвратом + рендерингом. ... таким образом, я также могу каким-то образом обнаружить потенциальную ненормальную задержку сети ....

Что я уже пробовал:

Пока ничего ... проблема в том, что страница визуализируется, поэтому, скорее всего, я не смогу на этом этапе снова вызвать сервер даже молча, иначе я создам новый запрос post ....

2 Ответов

Рейтинг:
1

Neha Ambasta

Вы можете использовать обратный вызов.Что делает call, так это то,что при завершении любой функции она вызывается.Вы также можете передавать параметры в обратном вызове.

function getDBData(callback) {
    $.ajax({
        type: "POST",
        url: "your url",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
           //your code here to retrieve data from db
        },
        complete:function () {
            if(callback) {callback();}
        }
        error: function (jqXHR, exception) {
          //your error message goes here
        }
    });
}

Надеюсь, это сработает!


Рейтинг:
0

eddieangel

Вам придется выполнить асинхронный вызов в обратном вызове, используя либо вызов jquery. ajax, либо объект XMLHTTPRequest. Ваша функция должна выглядеть примерно так:

function someFunction(args, callback) {

dosomething here;
callback();


}

function callback() {

$.ajax();


Вам придется искать синтаксис ajax для того, что вы хотите сделать, достаточно просто запустить вызов контроллера отсюда. Поскольку запись в журнале действительно асинхронна, довольно тривиально просто вызвать вызов ссылки и забыть, не нуждаясь в дополнительном обратном вызове из вашей функции ajax.