У меня есть всплывающее окно, которое открывается с помощью Javascript.В этом всплывающем окне у меня есть панель, которая используется для фильтрации.Каждый раз, когда пользователь щелкает опцию в фильтре и обновляет результаты, на сервер отправляется запрос.Однако если я закрою всплывающее окно, снова открою его и снова использую фильтр, запрос будет отправлен дважды, и если я буду повторять одну и ту же последовательность шагов, я продолжу увеличивать количество запросов, отправляемых каждый раз, на 1.
Это после того, как мы открываем всплывающее окно в первый раз и фильтруем в первый раз, как вы можете видеть, есть два запроса на NarrowEventsSearch
На рисунке ниже показано, что происходит после закрытиявсплывающее окно снова открывает его и фильтрует внутри.Мы видим, что в настоящее время отправлено 3 запроса на NarrowEventsSearch
Это код js, который открывает всплывающее окно
вызываемая функция следующая
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();