为什么JavaScript表单在Chrome中有效,而在Firefox中无效

why JavaScript form works in Chrome but not in Firefox

本文关键字:而在 Firefox 无效 有效 为什么 表单 Chrome JavaScript      更新时间:2023-09-26

我需要以下函数才能在Firefox中执行。。,但它在铬合金中运行良好。问题是当我做"用萤火虫检查元素"时,它工作得很好。方法"EditEncounterBillStatus"也正确命中。但当我不使用"Inspect Element With Firebug"时,方法EditEncounterBillStatus不会命中。。我试了很多办法来解决这个问题。但我仍然无法帮助我找到解决方案,提前谢谢。

  else if (element.trim() == "Approved") {
            var TestPin = prompt("Please Enter your PIN");
            if (TestPin != null) {
                if (isNaN(TestPin)) {
                    alert("Please Enter a Valid Pin");
                    return;
                }
                else if (TestPin == pin) {
                    var postVisitData = { VisitId: vid};
                    $.post("/Emr/WaitingRoom/EditEncounterBillStatus", { VisitId: vid }, function (data) {
                    });
                    window.location = "/Emr/Patients/Show?PID=" + pid;
                }
                else {
                    alert("Your Entered PIN Is Incorrect");
                }
            }
            else {
                return;
            }
        }

我建议像这样做

            else if (TestPin == pin) {
                $.post("/Emr/WaitingRoom/EditEncounterBillStatus", { VisitId: vid }, function (data) {
                    window.location = "/Emr/Patients/Show?PID=" + pid;
                });
                return; // in case of side effects in unseen code
            }

即等待$.post完成后再更改window.location

由于您的代码的其余部分是看不见的,以这种方式执行可能会有副作用-因此会返回到原来的位置-但即使这样,在不知道完整调用堆栈的情况下,仍然可能有副作用,您已经收到警告

您应该在post调用成功后更改位置,因此将其放在回调函数体中:

$.post("/Emr/WaitingRoom/EditEncounterBillStatus", { VisitId: vid },
      function (data) {
                window.location = "/Emr/Patients/Show?PID=" + pid;
      });

通过这种方式,您可以确保仅在执行post操作时更改位置。否则,您可能会在post发生之前更改位置。在调试模式下,当然当您逐步完成代码时,post有足够的时间及时完成,因此您的原始代码就可以工作了。

相关文章: