【问题标题】:Ajax disabling a popup menu pluginAjax 禁用弹出菜单插件
【发布时间】: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>&nbsp;<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


【解决方案1】:

感谢 @eck 建议 Chrome 的 Break On 功能。它帮助我检测出 DOM 的破坏位置。我跟踪了函数调用序列,发现一个函数将包含弹出菜单 HTML 的div 的 HTML 转换为 null,然后再次将其重置为弹出菜单的 HTML。但是该插件是在以前的弹出菜单的 HTML 上调用的。我删除了该代码,现在它工作正常。 :)

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多