我有一个返回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);
答案 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);
});