【问题标题】:Ajax call return function instead of dataAjax 调用返回函数而不是数据
【发布时间】:2019-07-19 12:32:16
【问题描述】:

我使用 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);

    };

截图

【问题讨论】:

  • 所以使用响应对象来引用文本/json/
  • 响应对象没有包含数据的字段
  • contentType: "application/json", 在那里做什么?您正在发出 GET 请求,因此没有请求正文来描述类型,并且您正在使用 JSONP,因此您无法覆盖请求标头!

标签: javascript jquery httpresponse jquery-deferred


【解决方案1】:

但它返回回调函数本身

您的屏幕截图未显示回调函数。它显示了一个 jqXHR 对象。

documentation

jqXHR.always(function( data|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

【讨论】:

    猜你喜欢
    • 2013-09-17
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2016-07-10
    • 2011-07-06
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多