Data from post request

2019-02-28 09:53发布

问题:

var pload = function(ctrl, func){
    var dataa;
    $.post("/index.php/"+ctrl+"/"+func,{}, function(data){
    dataa = data;
    });
    return dataa;
};

var bind = function(hashtag, ctrl, func, div){
    $(document).on("click", "a[href="+hashtag+"]", function() {
            var body = pload(ctrl, func);
             alert(body);
            $(div).html(body);
    })
}

How I can get data in global? I want, so pload return data from post request. But I get "undefined" in alert()

回答1:

Try using callback.

function pload(ctrl, func,callback){
    $.post("/index.php/"+ctrl+"/"+func,{}, function(data){
        callback(data);
    });
};

var bind = function(hashtag, ctrl, func, div){
    $(document).on("click", "a[href="+hashtag+"]", function() {
        pload(ctrl, func,function(body){
            alert(body);
            $(div).html(body);
        });             
    })
}


回答2:

tyr this:

var pload = function(ctrl, func){
    var dataa;
    $.post("/index.php/"+ctrl+"/"+func,{}, function(data){
    dataa = data;
    return dataa;
    });

};


回答3:

You're not getting any value back because $.post is asynchronous, and won't halt the program until it receives a value back.

You should move the data handling portion to the function which will be called when the async call returns its result.

var pload = function(ctrl, func){
    var dataa;
    $.post("/index.php/"+ctrl+"/"+func,
      {}, 
      //this function will be called when $.post receives its response
      function(data){
        alert(data);
        $(div).html(data);
      });
    return dataa;
};