ajax 的部分功能可以通过调试达到
Parts of ajax function can just be reached by debugging
我有一个 asp.net 应用程序,我在其中使用了 jquery。
在我的 jquery 代码中,我有一个简单的 ajax 请求,如下所示:
var allowDelete = true;
$.ajax({
url: '...',
dataType: 'json',
type: 'post',
data: { something...}
})
.success(function (response) {
if (response.Passed) {
//do something
}
else {
//do something
allowDelete = false;
}
})
.error(function () {
// do something
});
if (allowDelete) {
//something
}
如您所见,当我的 Passed var 值为 false 时,我希望将 var 设置为 false。
当我只是 运行 没有任何断点的代码时,allowDelete var 永远不会设置为 false。当我在设置 allowDelete false 的行旁边放置一个断点(在 firebug 中)时,它永远不会到达断点。但是当我在函数的开头放置一个断点并调试整个 ajax 时,它一切正常并得到我想要的结果。知道错误可能在哪里吗?
因为你在 1 个多月前问过这个问题,可能来晚了,但希望对你有所帮助:
原因是AJAX是异步的:
1. 将 allowDelete 设置为 true。
2. 你调用你的 AJAX 函数。它开始工作,转向您的服务器等。
3.你勾选allowDelete。现在仍然如此。
4. AJAX 调用 returns,如果条件正常(响应未通过),则将 allowDelete 设置为 false。
因此,由于异步,allowDelete 在您调用 AJAX 函数后立即被检查,不会等待答案(AJAX 回调方法)。基本上,您的 AJAX 函数回调方法运行得太晚了。
当您使用断点时,您的 AJAX 调用有足够的时间从服务器获得答案,因此上面的第四点比第三点早发生。
我有一个 asp.net 应用程序,我在其中使用了 jquery。 在我的 jquery 代码中,我有一个简单的 ajax 请求,如下所示:
var allowDelete = true;
$.ajax({
url: '...',
dataType: 'json',
type: 'post',
data: { something...}
})
.success(function (response) {
if (response.Passed) {
//do something
}
else {
//do something
allowDelete = false;
}
})
.error(function () {
// do something
});
if (allowDelete) {
//something
}
如您所见,当我的 Passed var 值为 false 时,我希望将 var 设置为 false。 当我只是 运行 没有任何断点的代码时,allowDelete var 永远不会设置为 false。当我在设置 allowDelete false 的行旁边放置一个断点(在 firebug 中)时,它永远不会到达断点。但是当我在函数的开头放置一个断点并调试整个 ajax 时,它一切正常并得到我想要的结果。知道错误可能在哪里吗?
因为你在 1 个多月前问过这个问题,可能来晚了,但希望对你有所帮助:
原因是AJAX是异步的: 1. 将 allowDelete 设置为 true。 2. 你调用你的 AJAX 函数。它开始工作,转向您的服务器等。 3.你勾选allowDelete。现在仍然如此。 4. AJAX 调用 returns,如果条件正常(响应未通过),则将 allowDelete 设置为 false。
因此,由于异步,allowDelete 在您调用 AJAX 函数后立即被检查,不会等待答案(AJAX 回调方法)。基本上,您的 AJAX 函数回调方法运行得太晚了。
当您使用断点时,您的 AJAX 调用有足够的时间从服务器获得答案,因此上面的第四点比第三点早发生。