2014-01-09 57 views
1
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); 
    }) 
} 

我怎样才能得到数据在全球范围内?我想,所以pload返回数据从发布请求。但我得到 “未定义” 在alert()来自帖子请求的数据

+0

可能重复[如何返回从AJAX调用的响应?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-调用) –

+0

在Stack Overflow中,这个问题已经在很多时候问过了。看看上面的链接,它确实会让你明白为什么它不起作用。 –

回答

2

尝试使用回调。

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); 
     });    
    }) 
} 
+0

大,thx!这是工作:) – user3169724

+0

@ user3169724欢迎:) – Hiral

0

酪氨酸这样的:

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

}; 
+0

会导致函数'pload'返回'dataa'吗? 我认为它会导致在异步调用完成时调用的函数返回'dataa'。 –

0

你没有得到任何值回来,因为$.post是异步的,直到接收到返回的值不会暂停程序。

您应该将数据处理部分移至将在异步调用返回结果时调用的函数。

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; 
};