ajax 不是命名空间内的函数

ajax is not a function inside a namespace

我正在尝试创建一个包含我应用程序所有调用的命名空间,但我不知道为什么当我尝试在命名空间内进行 Ajax 调用时它说 ajax不是函数

我尝试将 jQuery 设置为依赖项并将其传递给命名空间,但问题仍然存在

这是js

   var FOF = FOF || {};
   FOF.Users = {
    init: function(userRequest){

    var request = userRequest.request || '';
    var callbacks = userRequest.callbacks || {};
    var userId = userRequest.userId || 0;
    var event = userRequest.domainEvent || false;
    var dependency = userRequest.dependency ||  false;
    console.log(userRequest.dependency);
    console.log(userRequest);


    switch(request) {
        case 'getUser':{
            FOF.Users.getUserData(callbacks,dependency);
            break;
        }
        default:{
            console.log('Param Request Empty or not valid');
        }
    }


    },
    getUserData : function(callbacks,dependency){

        dependency.ajax({
            url: "Mocks/users.json",
            data: {},
            dataType: "json",
            method: 'get',
            success: function (data) {
                if (!isObjectEmpty(callbacks)) {
                    callbacks.run(data);
                }
                if(event){
                    document.dispatchEvent(new CustomEvent(event, {detail: {data}}));
                }

            },
            error : function (data) {
                if (!isObjectEmpty(callbacks)) {
                    callbacks.errors(data);
                }
                if(event){
                    document.dispatchEvent(new CustomEvent(event, {detail: {data}}));
                }
            },
            cache: false,
        });


        /*
        var xhr = new XMLHttpRequest();
        xhr.open('GET', encodeURI('Mocks/users.json'));
        xhr.onload = function() {
            if (xhr.status === 200) {
                console.log('Request Done', xhr);

            }
            else {
                console.log('Request Failed');
            }
        };
        xhr.send();
        */

    }

}




$(document).ready(function($){

    var userRequest = {
        dependency : jQuery,
        request: 'getUser',
        userId : 1,
        callbacks :getUserCallbacks,
        domainEvent: 'getUser' 
    }

    var getUserCallbacks = {
        run: function(data){
            console.log(data);
        },
        errors: function(data) {
            console.log(data);
        },
        serverError : function(data){
            console.log('La Culpa es de Api, preguntar a Pedro');
        },
    }

    FOF.Users.init(userRequest);
});




function isObjectEmpty(obj) {
    return Object.keys(obj).length === 0;
}

也是个笨蛋 https://plnkr.co/edit/1fPelOGyMiroOWWXMXXU?p=preview

希望我的英语够好,有什么问题可以问我 谢谢!

这一行:

var dependency = FOF.Users.jQuery ||  false;

PDF.Users.jQuery 实际上不是 jQuery(它似乎未定义)。

你是不是想说:

var dependency = usersRequest.dependency || false

编辑

我敢打赌你的 AJAX 请求会通过,但你的回调不会被调用,因为 hoisting 以及你在 userRequest 之前声明的事实=15=].

userRequest之前声明getUserCallbacks - 否则,userRequest.callbacks将是undefined.

var getUserCallbacks = {
    run: function(data){
        console.log(data);
    },
    errors: function(data) {
        console.log(data);
    },
    serverError : function(data){
        console.log('La Culpa es de Api, preguntar a Pedro');
    },
};

var userRequest = {
    dependency : jQuery,
    request: 'getUser',
    userId : 1,
    callbacks :getUserCallbacks,
    domainEvent: 'getUser' 
}

编辑 #2

除了我之前的编辑之外,您还在 header 中添加了 jQuery slim。 jQuery slim 不包含 jQuery 的 ajax 功能。如果您想使用 ajax,只需包含 jQuery 而不是 jQuery slim。