函数的ajax返回值

时间:2015-10-15 22:59:01

标签: javascript jquery ajax

为什么在调用函数时不返回值?我已经尝试了回调,我似乎无法让它工作。它允许我使用console.log,但它不会将其返回到tmp变量。

var URL = "https://api.instagram.com/v1/media/popular?client_id=642176ece1e7445e99244cec26f4de1f";

function getData(){
  var tmp;
    $.ajax({
         type: "GET",
         url: URL,
         dataType: "jsonp",
         success: function(result){
          if(result.meta.code == 200){
            tmp = result.data;
            //console.log(result.data);
          }else{
            alert('fail');
            alert(result.meta.error_message);
          }
         }
    });
    return tmp;
}
console.log(getData()); // undefined?

提前感谢!

2 个答案:

答案 0 :(得分:0)

ajax方法是异步的。这意味着调用函数将继续,而不必等待ajax调用完成。

这已在更深入地解释,这里: How do I return the response from an asynchronous call?

答案 1 :(得分:0)

我建议您遵循在jQuery中使用Ajax的方法

function removeAttr() {
    var i, buttons = document.getElementsByClassName('choice');
    for (i = 0; i < buttons.length; i++) {
        buttons[i].removeAttribute('class');
    }
}

基本上Javascript中的Ajax是异步的。在实际收到请求的结果之前,它不会调用成功或失败方法。