我正在尝试创建一个包含我的应用程序的所有调用的命名空间,但我不知道为什么当我尝试在命名空间内执行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
我希望我的英语很好,如果您有任何疑问,请问我 谢谢!
答案 0 :(得分:1)
这一行:
var dependency = FOF.Users.jQuery || false;
PDF.Users.jQuery
实际上并不是jQuery(它似乎未定义)。
你或许想说:
var dependency = usersRequest.dependency || false
修改强>
我打赌你的AJAX请求会通过,但由于hoisting以及你在userRequest
之前声明getUserCallbacks
这一事实,你的回调没有被调用{1}}。
在 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
功能。如果你想使用ajax,只需要包含jQuery而不是jQuery slim。