Клиент вызывает сервер бесчисленное количество раз, когда я закрываю и открываю всплывающее окно - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть всплывающее окно, которое открывается с помощью Javascript.В этом всплывающем окне у меня есть панель, которая используется для фильтрации.Каждый раз, когда пользователь щелкает опцию в фильтре и обновляет результаты, на сервер отправляется запрос.Однако если я закрою всплывающее окно, снова открою его и снова использую фильтр, запрос будет отправлен дважды, и если я буду повторять одну и ту же последовательность шагов, я продолжу увеличивать количество запросов, отправляемых каждый раз, на 1.

Это после того, как мы открываем всплывающее окно в первый раз и фильтруем в первый раз, как вы можете видеть, есть два запроса на NarrowEventsSearch first try

На рисунке ниже показано, что происходит после закрытиявсплывающее окно снова открывает его и фильтрует внутри.Мы видим, что в настоящее время отправлено 3 запроса на NarrowEventsSearch second try

Это код js, который открывает всплывающее окно enter image description here

вызываемая функция следующая

function tb_show(fake_param, url, callbackFunction) {
SetAjaxCaching(false);
var params = parseThickBoxArgs(url);
trace("----------- Thickbox parameters -----------");
trace("URL Passed was " + url);
trace(params);

var href = params["url"] + "?" + $.param(params);
var dialogTitle = $(this).attr("title");

//Unique id is given for the div
var divId = new Date().getTime().toString();
// Create an anonymous div with a loading gif to be the dialog
var newDiv = $('<div id="' + divId + '"  class="dialogcontainer">' + spinnerHTML + '</div>');

// We push the newly created div onto the window stack so we can keep track of what dialogs are open
window.openedDialogs.push([newDiv, href]);
$('body').append(newDiv);

trace("Opening dialog with height " + params["height"] + " and width " + params["width"]);
//To avoid the scrollbars.
var height = parseInt(params["height"]) + 10;
var width = parseInt(params["width"]) + 10;

if (params["percentWidth"] !== undefined) {
    var windowWidth = $(window).width();
    var percentWidth = parseFloat(params["percentWidth"]) / 100.0;

    width = windowWidth * percentWidth;
}
if (params["percentHeight"] !== undefined) {
    var windowHeight = $(window).height();
    var percentHeight = parseFloat(params["percentHeight"]) / 100.0;

    height = windowHeight * percentHeight;
}

var CssClass = params["class"];
if (CssClass == undefined) {
    CssClass = '';
}

var title = params["title"];

// Now we actually invoke the dialog function with the parameters we parsed earlier
newDiv.dialog({
    title: title,
    height: height, //params["height"],
    width: width, //params["width"],
    closeOnEscape: false,
    modal: true,
    open: function (event, ui) {
        $(this).parent().find('.ui-dialog-titlebar').append("<div style=\"float: right;\"><img src=\"/Resources/Content/Images/Icons/remove.png\" class=\"Delete\" style=\"cursor: pointer;\" onclick=\"closeDialog('" + CssClass + "')\" /></div>");
    }
})
    .load(href, JSON.stringify({ showLoadingBar: false }), function () {
        trace("Overlay Div content loaded");
        // After the content has been loaded, apply the thickbox script to the loaded content
        applyThickboxes($(this));
        // Now run the callback function, if it is indeed a function
        if (typeof (callbackFunction) == 'function') {
            callbackFunction();
        }
    });
hideTitleBar();
//LoadValidation();    
...