【发布时间】:2012-01-22 21:27:44
【问题描述】:
各位程序员大家好!我刚刚开始了一个额外的编程项目,我向上帝发誓我的代码将比以前更干净,更容易升级。
然后我偶然发现了我的“主要敌人”jQuery AJAX 回归。上次我想从 AJAX 调用中返回一些东西时,我不得不弯腰并让调用同步。这让事情变得又粘又丑,我希望这次我能找到更好的东西。
所以我现在一直在谷歌搜索/搜索 stackoverflow,只是不明白许多人得到的这个解决方案,它被称为 回调函数。有人可以给我一个示例,说明如何利用这些 回调函数 来返回我的登录状态:
function doLogin(username, password) {
$.ajax({
url: 'jose.php?do=login&user='+username+'&pass='+password,
dataType: 'json',
success: function(data) {
if(data.success==1) {
return('1');
} else {
return('2');
}
$('#spinner').hide();
},
statusCode: {
403:function() {
LogStatus('Slavefile error: Forbidden. Aborting.');
$('#spinner').hide();
return (3);
},
404:function() {
LogStatus('Slavefile was not found. Aborting.');
$('#spinner').hide();
return (3);
},
500:function() {
LogStatus('Slavefile error: Internal server error. Aborting.');
$('#spinner').hide();
return (3);
},
501:function() {
LogStatus('Slavefile error: Not implemented. Aborting.');
$('#spinner').hide();
return (3);
}
},
async: true
});
}
所以你可能知道,你不能像我在 AJAX 调用中那样使用return。您应该改用我不知道如何使用的 回调函数。
如果有人可以使用回调函数为我编写这段代码并向我解释它们是如何工作的,我将非常感激。
编辑:
我真的需要退回东西,而不是立即使用它。这个函数是从另一个函数中调用的,应该可以从不同的地方调用,而不需要稍微重写。
/编辑
此致,
阿克
Oy Aimo Latvala Ab 的网络开发人员
【问题讨论】:
-
您只是不能将异步Ajax 成功处理程序的值返回给启动Ajax 请求的代码。这就像试图在不下水的情况下游泳。
-
如果不更改代码和程序逻辑,您将无法支持回调和异步行为,更改可能非常广泛,事实就是如此。
-
感谢大家提供的信息。异步在这种情况下有点愚蠢。
标签: javascript jquery ajax callback return