从jquery成功传递变量

时间:2016-11-07 22:34:15

标签: php jquery json ajax

我发布了一个类似的问题,但由于堆栈溢出很快就死了,我觉得我没有得到答案。

有时候,除非我的代码完成,否则我不会理解。人们倾向于非常非常地解释事情。示例: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);

我试图让变量离开这里,以便我可以在另一个函数中使用它。

我很困惑,非常感谢帮助。

1 个答案:

答案 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);

现在如果您有任何疑问,请询问他们,但要尊重他人。因此,人们不是您的员工或老师,向您解释这是如何运作的。你应该自己做一些研究。 在这个笔记上,祝你有个美好的夜晚!