function getUserHours(tyPe, tarGet){
$.get('/activities/search', { 'type': tyPe },
function(data){
var hourResultData = jQuery.parseJSON(data);
var registeredHours = 0;
for (var i in hourResultData.activities){
registeredHours += parseFloat(hourResultData.activities[i].hours);
}
$(tarGet).empty().append(registeredHours);
return registeredHours;
});
}
我想:
alert( getUserHours('r', '#reg-hours'));
提醒registeredHours
答案 0 :(得分:1)
直接返回数据只有在关闭AJAX的异步GET时才会起作用:
$.ajax({
type: 'GET',
url: '/activities/search',
data: { 'type': tyPe },
async : false,
success : function() { }
});
不建议这样做,因为浏览器将阻止,直到您的请求完成。相反,您应该继续使用函数回调来跟踪异步编程模型:
$.ajax({
type: 'GET',
url: '/activities/search',
data: { 'type': tyPe },
async : false,
success : function() { }
});
function getUserHours(tyPe, tarGet, callback)
{
$.get('/activities/search', { 'type': tyPe },
function(data)
{
var hourResultData = jQuery.parseJSON(data);
var registeredHours = 0;
for (var i in hourResultData.activities){
registeredHours += parseFloat(hourResultData.activities[i].hours);
}
$(tarGet).empty().append(registeredHours);
if($.isFunction(callback))
callback(registeredHours);
});
}
getUserHours('r', '#reg-hours', function(hours) {
alert(hours);
});
答案 1 :(得分:0)
当数据准备就绪时,将调用您尝试返回的回调函数,这意味着数据是异步发送的。
这意味着您无法直接从getUserHours
函数返回数据。您需要一个回调函数来在数据准备好时触发。
这样的事情:
function getUserHours(tyPe, tarGet, callback){
$.get('/activities/search', { 'type': tyPe },
function(data){
var hourResultData = jQuery.parseJSON(data);
var registeredHours = 0;
for (var i in hourResultData.activities){
registeredHours += parseFloat(hourResultData.activities[i].hours);
}
$(tarGet).empty().append(registeredHours);
callback(registeredHours); // callback, send back data to callback function
});
}
然后在getUserHours
中发送匿名函数作为参数。
getUserHours('r', '#reg-hours', function(data) {
alert(data);
});