提问人:Vistor 提问时间:3/6/2018 最后编辑:Vistor 更新时间:3/7/2018 访问量:422
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;
}
还有一个 Plunker https://plnkr.co/edit/1fPelOGyMiroOWWXMXXU?p=preview
我希望我的英语足够好,如果您有任何问题请问我 谢谢!
答:
1赞
Adam Jenkins
3/6/2018
#1
这一行:
var dependency = FOF.Users.jQuery || false;
PDF.Users.jQuery
实际上不是 jQuery(它似乎是未定义的)。
你是不是想说:
var dependency = usersRequest.dependency || false
编辑
我敢打赌你的 AJAX 请求通过了,但你的回调没有被调用,因为提升和你之前声明的事实。userRequest
getUserCallbacks
声明之前 - 否则,将是 .getUserCallbacks
userRequest
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
除了我之前的编辑之外,您在标题中还包括 jQuery slim。jQuery slim 不包含 jQuery 的功能。如果要使用 ajax,只需包含 jQuery 而不是 jQuery slim。ajax
评论
0赞
Vistor
3/7/2018
哎呀,是的,我更改了它以测试解决方案并忘记了它,我已经更新了代码,但仍然无法正常工作
0赞
Vistor
3/7/2018
同样的错误,即使我将其作为依赖项传递,它也找不到jqueryUncaught TypeError: dependency.ajax is not a function
1赞
Adam Jenkins
3/7/2018
@Vistor - 查看我对答案的编辑,它们将解决您的问题。
0赞
Vistor
3/7/2018
我明白了,该死的引导。现在它工作正常,谢谢!
评论