我需要在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;
}
}
答案 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
有足够的时间及时完成,因此原始代码可以正常工作。