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。
我正在尝试创建一个包含我应用程序所有调用的命名空间,但我不知道为什么当我尝试在命名空间内进行 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。