【发布时间】:2015-10-26 07:05:49
【问题描述】:
我有以下 JavaScript 代码:
Interface.init = function()
{
$.ajax({
type: "POST",
url: "/Validate",
async: false,
success: function (data) {
if (data.Valid) {
// All good, continue executing JS code
}
else {
// Display error messsage, attempt to stop executing JS code...
return false;
}
},
error: function () {
// Display error message, attempt to stop executing JS code...
return false;
}
});
// More JavaScript functions used to load content, etc...
}
加载时索引页面调用Interface.init():
<html>
<script type="text/javascript">
$(document).ready(function () {
Interface.init();
});
</script>
</html>
ajax函数用于检查加载页面的设备是否有效。它运行synchronously,因此页面在继续之前等待验证完成。如果验证成功,则退出 ajax 函数并继续执行其余的 JavaScript 代码。如果验证失败(或验证过程中出现错误),我不希望执行任何剩余的 JavaScript 代码。
我目前正在使用return false,但我也尝试过return 并抛出诸如throw new Error("Validation failed") 之类的错误(正如许多其他问题所建议的那样)。
所有这些似乎都是退出 ajax 函数,页面上所有剩余的 JavaScript 继续执行。在ajax 函数之外,这些方法按预期工作以阻止剩余代码执行,但我希望这可以在ajax 函数中完成。这有可能吗?
【问题讨论】:
-
"页面等待验证完成后再继续。如果验证成功,则退出ajax函数,继续执行剩下的JavaScript代码。如果验证失败(或者在验证过程中出现错误),我希望页面上的所有 JavaScript 都停止执行。” 停止
js取决于来自$.ajax()的响应? -
@Frédéric Hamidi - 您将其标记为重复的问题,与我在这里提出的问题甚至不相近。
-
@sfinks,那么请在此处准确解释您的要求。 我想要 ALL 页面上的JavaScript 停止执行 对我来说很清楚。
-
@FrédéricHamidi 你读过这个问题的答案了吗?无论如何,如果验证失败或发生错误,则不应对该页面进行任何操作,即。没有更多的代码要执行,页面基本上就死了。
-
@sfinks, sigh,是的,我已经阅读了副本下的答案,他们基本上说不可能停止 ALL 页面中的脚本,这就是您所要求的(在您的第二个代码 sn-p 下的段落末尾,强调和全部)。如果这不是您要问的,那么请编辑您的问题以使其更清楚。谢谢。
标签: javascript jquery ajax validation