为什么JavaScript表单适用于Chrome,但不适用于Firefox

时间:2015-11-21 08:47:51

标签: javascript jquery google-chrome firefox

我需要在Firefox中执行以下功能..但它在chrome中工作正常。问题是当我做'用萤火虫检查元素'时它工作正常。方法'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;
            }
        }

2 个答案:

答案 0 :(得分:1)

我建议这样做

            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

由于其他代码是看不见的,因此可能会出现以这种方式执行此操作的副作用 - 因此返回它的位置 - 但即便如此,不知道完整的调用堆栈仍可能存在副作用 - 您已经警告

答案 1 :(得分:1)

您应该在post来电成功后更改位置,因此请将其放入回调函数正文中:

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

这样,您确定只在执行post操作时更改位置。否则,您可能会在post发生之前更改位置。在调试模式下,当您单步执行代码时,post有足够的时间及时完成,因此原始代码可以正常工作。