我发布了一个类似的问题,但由于堆栈溢出很快就死了,我觉得我没有得到答案。
有时候,除非我的代码完成,否则我不会理解。人们倾向于非常非常地解释事情。示例:How do I return the response from an asynchronous call?
在第一个答案中,他解释了如何重构代码。但他没有正确解释这些步骤。他没有解释回调是什么或结果是什么。他只是把他们扔进那里。我假设他提供了多个如何做的例子,但他并没有解释使用什么。
以下是我原来的代码:
var admin_data = false;
function getPlayerAdmin(admin_data){
var formData = {
'player_id' : $('#post-v').attr('data-val')
};
$.ajax({
type: 'post',
url: '/popins/player/controls',
data : formData,
dataType : 'json',
success: function(admin_data_vals, admin_data) {
if(admin_data_vals.controls.is_admin == true){
admin_data = true;
}else{
admin_data = false;
}
},
error : function(jqXHR, textStatus, errorThrown){
console.log(jqXHR);
}
});
}
getPlayerAdmin();
alert(admin_data);
以下是我试图根据他的......重新构建的例子:
var admin_data = false;
var result = getPlayerAdmin();
getPlayerAdmin(function(result) {
if(admin_data_vals.controls.is_admin == true){
admin_data = true;
}else{
admin_data = false;
}
});
function getPlayerAdmin(callback){
var formData = {
'player_id' : $('#post-v').attr('data-val')
};
$.ajax({
type: 'post',
url: '/popins/player/controls',
data : formData,
dataType : 'json',
success: function(admin_data_vals, callback) {
},
error : function(jqXHR, textStatus, errorThrown){
console.log(jqXHR);
}
});
}
getPlayerAdmin();
alert(admin_data);
我试图让变量离开这里,以便我可以在另一个函数中使用它。
我很困惑,非常感谢帮助。
答案 0 :(得分:0)
你必须明白有些人在学校或工作,而不是整天都在回答人们的问题,这可以通过谷歌和研究文档轻松回答。
无论如何,这是一段完整评论的代码:
function getData(callback) { // You pass a callback function as a parameter
var formData = {
'player_id' : $('#post-v').attr('data-val')
};
$.ajax({
type: 'post',
url: '/popins/player/controls',
data : formData,
dataType : 'json', // data passed in the success function will going to be parsed if you specify the `dataType`.
success: function(data) {
// on success, you call the callback function, passing the data you just got
callback(data);
},
error: function(jqXHR, textStatus, errorThrown) {
// on error, just log the error.
console.log(errorThrown);
}
});
}
getData(function(data) { // You are calling the `getData` function, passing another function as a parameter, which is going to get called on success
// This will log the object that you asked your server for.
console.log(data);
});
函数getData
向服务器查询数据,然后调用您作为参数传递的函数,在本例中为匿名函数。
您可以轻松地像这样拨打getData
,基本上再做一步:
function analyseData(data) {
console.log(data);
}
getData(analyseData);
现在如果您有任何疑问,请询问他们,但要尊重他人。因此,人们不是您的员工或老师,向您解释这是如何运作的。你应该自己做一些研究。 在这个笔记上,祝你有个美好的夜晚!