如何提醒此功能返回的内容?

时间:2014-03-21 20:35:43

标签: javascript

我有一个返回JSON信息的函数。我希望能够将其存储到变量中,然后使用alert和变量名来显示从该函数返回的内容。这是我的代码:

var getStuff2 (function (num) {
    $.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://catholic.com/api-radio/' + num) + '&callback=?', function(data) {
        //console.log(data.contents);
        //$('#response').text(data.contents);
        obj = data.contents;
        //alert(obj);
    }];

    return data.contents;

});

}); 

function getData(){
    getStuff2(6387);
}

getData();

alert(getStuff2);

3 个答案:

答案 0 :(得分:0)

您必须将警报放在AJAX函数的回调处理程序中。 AJAX调用是异步的,这意味着如果您执行此类操作,则返回将按您期望的顺序工作:

function getData() {
    doAjax(function(data) {
        obj = data.contents;
    });
    alert(obj);
}

你知道,AJAX调用将在返回时返回,并且当AJAX调用仍在等待响应时,它之后的所有代码将继续执行。

所以你需要做的是:

function getData() {
    doAjax(function(data) {
        obj = data.content;
        alert(obj);
    });
}

答案 1 :(得分:0)

我认为,data.contents是一个对象,因此您的警报输出看起来像[对象对象],因此您无法提醒内容。

要使其全局可用,只需将内容存储在一个gloabl变量中。

var result;
var getStuff2 (function(num) {
   $.getJson(url, function(data)
       result = data.contents;
   });
}),

答案 2 :(得分:0)

异步函数不能return值。相反,您需要使用AJAX回调中的值显式执行某些操作。

function getStuff(num, onContents){
    $.getJSON(..., function(data){
       //call the oncontents callback instead of returning
       onContents(data.contents);
    });
}

//when calling getstuff, pass a function that tells what to do with the contents
getStuff(6387, function(contents){
    console.log(contents);
});