我通过jquery $ ajax调用发出请求,但是它返回回调函数本身,而不是正确的数据响应,并显示消息“ ReferenceError:未定义recapCB”;
var recapMonthDEF = $.ajax({
type: 'get',
url: getAnalyticsApiURL('recapMonth'),
dataType: 'jsonp',
contentType: "application/json",
});
$.when(lastMonthSessionsDEF, recapMonthDEF).always(function(){
$('#Dashboard-tabs-1 .toggle input[type="checkbox"]').removeAttr('disabled');
});
recapMonthDEF.always(recapCB);
var recapCB = function(response){
if($('#newUsers').length == 0) return;
data = response;
var percent = parseFloat(parseFloat(data.percentNewSessions).toFixed(1));
var percentDiff = parseFloat((100 - percent).toFixed(1));
var sessionDuration = moment().startOf('day').seconds(data.sessionDuration).format('H:mm:ss');
$('#analitycs-session').html(data.sessions);
$('#analitycs-users').html(data.users);
$('#analitycs-pageviews').html(data.pageviews);
$('#analitycs-sessionsPerUser').html(parseFloat(data.sessionsPerUser).toFixed(2));
$('#analitycs-sessionDuration').html(sessionDuration);
$('#analitycs-newUsers').html(data.newUsers);
};
答案 0 :(得分:1)
但它会返回回调函数本身
您的屏幕截图未显示回调函数。它显示了一个jqXHR对象。
请参见documentation:
jqXHR.always(function(data(j | jqXHR,textStatus,jqXHR | errorThrown){}); (在jQuery 1.6中添加)
完整的回调选项,.always()方法替换不推荐使用的方法 .complete()方法。为响应成功的请求,该函数的参数为 与.done()的相同:data,textStatus和jqXHR对象。对于 失败的请求的参数与.fail()的参数相同: jqXHR对象,textStatus和errorThrown。请参考deferred.always() 有关实施细节。
由于获得了jqXHR对象,因此必须触发错误状态。
最可能的原因是您所使用的URL没有给出JSONP响应。
ReferenceError:未定义recapCB
尝试在之后的行上定义recapCB
。