【发布时间】:2015-08-21 09:28:24
【问题描述】:
我在我的 ASP.NET Web 窗体项目中使用这个 JavaScript 弹出菜单:http://jsfiddle.net/o8x59caz/4/
在我调用包含 Ajax 代码的 JavaScript 函数之前,此代码运行良好。并且这个函数和小提琴中给出的函数之间没有关系或公共标签(或标签类)。但是每当我调用这个 Ajax 函数时,它会禁用弹出菜单,并且当我单击显示这个弹出菜单的按钮时什么也没有发生。但是在控件到达这个 Ajax 函数之前,这个弹出菜单工作正常。我试图检查浏览器控制台,但它没有显示错误或警告。以下是我的 Ajax 函数的代码:
var curevaldiv, ecount = 0;
function SaveAll() {
var gifurl = '<data url of gif animation';
var evalDivs = $("div.evld");
if (evalDivs.length > 0) {
evalDivs.html("<img src='" + gifurl + "' alt='Please wait. ' style='height:35px'/> <span style='font-size: medium'>Evaluating...</span>");
var i; var infoids = '';
for (i = 0; i < evalDivs.length; i++) {
curevaldiv = evalDivs[i];
infoids = infoids + curevaldiv.dataset.infoid + ';';
}
SendToServer(3,
{ "InfoIDs": infoids },
null,
function (data) {
if (data.rstat != -1) {
var infoid, infoval;
var infovals = data.rhtml.split(';');
for (var j = 0; j < infovals.length; j++) {
infoid = infovals[j].split(':')[0];
infoval = infovals[j].split(':')[1];
$('#val' + infoid).html("<i class='fa fa-calculator'></i> <span class='counter'>" +
(infoval == "[ERROR]" ? "<font color='red'><small><i class='fa fa-exclamation-circle'></i> ERROR</small></font>" : infoval) +
"</span>");
}
ecount++;
}
else
curevaldiv.innerHTML = "<font color='red'><small><i class='fa fa-exclamation-circle'></i> ERROR</small></font>";
},
function () {
curevaldiv.innerHTML = "<font color='red'><small><i class='fa fa-exclamation-circle'></i> ERROR</small></font>";
});
}
}
SendToServer()是我为避免一次又一次地编写常见的Ajax参数而创建的一个Utility函数。
请帮帮我!在过去的三天里,这个问题让我的头很重。 :(
【问题讨论】:
-
您是否可以将部分弹出菜单替换为 AJAX 调用的结果?
-
@tvanfosson 我使用 Firefox 和 IE 的 Inspect Element 检查了它,但在 Ajax 调用后我发现弹出菜单代码中没有替换。
-
我会尝试使用 Chrome 的“中断 > 子树修改”来确保弹出菜单不会以某种方式被操纵。我的第一个猜测是你以某种方式破坏了 DOM。不看其余代码很难判断。
-
感谢@eck 建议 Chrome 的这个功能。看我的回答。 :)
标签: javascript jquery html asp.net ajax