如何在ajax调用中停止所有JavaScript的执行?
How do I stop all JavaScript executing from within an ajax call?
我有以下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()
on load:
<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
函数内完成的。这有可能吗?
你可以在函数之前创建一个外部变量,然后在函数之后使用它,例如:
Interface.init = function()
{
var error = false;
$.ajax({
type: "POST",
url: "/Validate",
async: false,
success: function (data) {
if (data.Valid) {
// All good, continue executing JS code
}
else {
error = true;
}
},
error: function () {
error = true;
}
});
if (error) return;
// More JavaScript functions used to load content, etc...
}
但事实上,我建议不要使用async=false
,而不是,你可以包装你的代码在一个函数中,并调用它的回调,例如:
Interface.init = function()
{
$.ajax({
type: "POST",
url: "/Validate",
success: function (data) {
if (data.Valid) {
// All good, continue executing JS code
loadAll();
}
},
error: function () {
}
});
function loadAll() {
// More JavaScript functions used to load content, etc...
}
}
相关文章:
- JavaScript执行暂时挂起页面
- 页面在我的javascript执行后重新加载,我不希望它这样做
- 如何在使用jQuery.html()时防止javascript执行
- 如何打开一个新窗口或选项卡,并将其提供给javascript执行
- 如何在Ajax加载新内容时停止JavaScript执行
- 如何使用xpath和Javascript执行器打印文本
- cakehp2.x用javascript执行控制器
- 如何在不使用javascript执行的情况下为函数分配参数
- Javascript执行顺序错误
- Javascript执行顺序和回调
- 如何在Javascript执行后防止浏览器锁定
- JavaScript执行从函数声明开始,而不是从$(document).ready()开始
- 在asp.net页面中显示javascript执行过程中的加载图标
- 基于浏览器窗口大小的条件 JavaScript 执行
- 使用 JavaScript 执行一行 PHP(不包括 PHP 文件)
- Dom 解析和 JavaScript 执行
- 为什么通过javascript执行php可以工作
- JavaScript执行路径
- 从javaScript执行服务器端代码
- 如何使用Javascript执行客户端web抓取