Jquery 使用AJAX将数据返回到变量中
我有一个简单的AJAX调用,它查询twitterapi以返回URL被tweet发送的次数。我正试图将这个返回值与来自其他社交网络的类似AJAXs呼叫一起设置。然后我想把所有的值加在一起,得到一个“共享”总数,它将在HTML页面中使用 下面是我用代码尝试的内容:Jquery 使用AJAX将数据返回到变量中,jquery,ajax,json,Jquery,Ajax,Json,我有一个简单的AJAX调用,它查询twitterapi以返回URL被tweet发送的次数。我正试图将这个返回值与来自其他社交网络的类似AJAXs呼叫一起设置。然后我想把所有的值加在一起,得到一个“共享”总数,它将在HTML页面中使用 下面是我用代码尝试的内容: var twitter = $.ajax({ dataType: 'jsonp', url: 'http://cdn.api.twitter.com/1/urls/count.json',
var twitter = $.ajax({
dataType: 'jsonp',
url: 'http://cdn.api.twitter.com/1/urls/count.json',
data: { url: shareUrl},
async: 'false',
success: function(data) {
return data.count;
}
});
我的目标是运行一个简单的数学函数,如下所示:
var total = twitter + facebook;
然后将总数输出到DOM元素
当我运行console.log(twitter)时;我得到的是一个对象readystate,但是如果我在success函数中运行console.log,我得到的是正确的数字。因为这将是一个非常轻松的页面集'async:false',希望它将返回值,然后转到下一个函数。但不管我尝试了什么,我都无法从AJAX函数中获得价值。我哪里出错了,或者我需要修改什么?这是一个在jQuery中使用延迟的完美例子。通过延迟,您可以创建回调,这些回调将在一系列异步操作完成后调用(而不是像通常的回调那样只调用一次) 然后,您可以计算来自“内部”回调的总结果 编辑:现在更优雅没有全球性的
function Twitter() {
var dfd = $.Deferred();
$.ajax({
...
success: function(data) {
dfd.resolve(data.count);
}
});
return dfd.promise();
}
function Facebook() {
var dfd = $.Deferred();
$.ajax({
...
success: function(data) {
dfd.resolve(data.count);
}
});
return dfd.promise();
}
$.when(Twitter(), Facebook()).then(function(twitter, facebook) {
alert('The total is ' + (twitter+facebook));
}
我对成功的理解是一次回调,并且在你所问问题的范围之外被激发。成功如何:函数(数据){$('#twitter').html(数据)}@DarenSchwenke:不需要全局变量。但是,是的,在包含调用的范围内。