我的$ .json jQuery调用函数出了问题,这是我的代码:
// function to get currency live rates from yahoo api keys
function getRate(from, to) {
$.getJSON('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22'+from+to+'%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=', function(data) {
var rate = data.query.results.rate.Rate;
return rate;
});
}// end of function
var receive = getRate('USD','EUR');
答案 0 :(得分:2)
$ .getJSON是一个异步函数,这意味着一旦数据就绪就会执行回调,尝试在异步调用之后立即读取数据通常会得到一个空结果。
这里你真正需要的是传递你想要填充的变量以及回调函数
答案 1 :(得分:0)
Ajax中的A代表异步,您将在回调中获得结果而不是返回值
function getRate(from, to) {
$.getJSON('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22'+from+to+'%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=',
function(data) {
var rate = data.query.results.rate.Rate;
// here you process
});
}// end of function
getRate('USD','EUR');
答案 2 :(得分:0)
另一种方法是简单地从函数返回jqXHR对象,然后在调用函数后使用它:
function getRate(from, to) {
return $.getJSON('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22'+from+to+'%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=');
}
getRate('USD','EUR').done(function(data) {
var receive = data.query.results.rate.Rate;
// Do your work here
});
答案 3 :(得分:0)
最后我找到了一个使用$ .ajax调用函数将值返回到变量的解决方案, 检查上面的代码,对我来说非常合适,顺便说一下,谢谢大家:)
var rate = []; //第1步,我们创建一个新数组,因为我们将在这里存储返回值
//第2步,我们在
下创建我们的功能函数getRate(from,to){
//第3步,变量内的ajax调用
var ajaxCall = $ .ajax({
async:false,
dataType:"json",
type:'GET',
url:'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22'+from+to+'%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=',
success: function(data) {
result = data.query.results.rate.Rate;
rate.push(result); //we push the result into the array
} }); // ajax call end
if(rate.indexOf()< = 0){
ajaxCall.abort();
return calc;
}
} //功能在这里完成
//然后瞧瞧:)
var returnValue = getRate('USD','EUR');
//现在做你想做的事
//例如:
警报(的returnValue);