ajax不是命名空间内的函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax不是命名空间内的函数相关的知识,希望对你有一定的参考价值。
我正在尝试创建一个包含我的应用程序的所有调用的命名空间,但我不知道为什么当我尝试在命名空间内进行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
我希望我的英语很好,如果您有任何疑问,请向我致谢!
答案
这一行:
var dependency = FOF.Users.jQuery || false;
PDF.Users.jQuery
实际上并不是jQuery(它似乎未定义)。
你或许想说:
var dependency = usersRequest.dependency || false
编辑
我敢打赌你的AJAX请求会通过,但你的回调没有被调用,因为hoisting以及你在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
功能。如果你想使用ajax,只需要包含jQuery而不是jQuery slim。
以上是关于ajax不是命名空间内的函数的主要内容,如果未能解决你的问题,请参考以下文章