我正嘗試使用另一個JavaScript文件中定義的classname調用回調函數,但我無法調用。我沒有得到我所犯的錯誤。請讓我知道我在下面的代碼中所犯的錯誤,並且謝謝您爲您提供的幫助。如何使用另一個JavaScript文件中定義的類名稱調用回調函數
我已經創建了一箇中央JavaScript文件像下面
CentralScript.js
function CentralScript() {
}
CentralScript.prototype.makeRequest = function (className, cbf, dataToSend) {
$.ajax({
url: 'apiurl',
type: 'POST',
dataType: 'json',
data: {
parameters : dataToSend
},
success: function (responseData) {
this.showResponse(className, cbf, responseData);
},
complete: function() {
},
error: function() {
console.log("Error occurred...");
}
});
};
CentralScript.prototype.showResponse = function (className, cbf, data) {
className.cbf(data);
};
和我創建像另一個文件下
SomeFile.js
function SomeFile() {
}
SomeFile.prototype.sayHi = function() {
var obj = new CentralScript();
var dataToSend = {
method: 'someMethod'
};
obj.makeRequest('SomeFile', 'resultToShow', dataToSend);
};
SomeFile.resultToShow = function (data) {
console.log(data);
};
個
和我創建main.js文件中像下面
main.js
var ProjectName= (function() {
var sfObj;
function init() {
createObjects();
initiateProject();
}
function createObjects() {
sfObj = new SomeFile();
}
function initiateProject() {
sfObj.sayHi();
}
return {
init : init
};
})();
$(ProjectName.init);
我得到當我從SomeFile.js文件製作Ajax請求的響應,但響應沒有登錄到控制檯。
我得到 'CBF' 作爲CentralScript.js文件
CentralScript.prototype.showResponse = function (className, cbf, data) {
className.cbf(data);
};
我可以這樣調用「className.cbf(數據)的回調函數未定義在 'showResponse方法' 功能目前;「出現在SomeFile.js
請讓我知道我做的錯誤,謝謝你展示了很多的幫助。
'className'是一個**字符串**,字符串沒有名爲'cbf'的屬性。 –
'this' at'this.showResponse(className,cbf,responseData);'會引用請求對象,而不是'CentralScript' – guest271314
看看[點符號vs括號表示法](https://stackoverflow.com/questions/ 4968406/JavaScript的屬性的訪問點表示法-VS-括號)。你不應該傳遞名字 - 只是傳遞它們代表的對象! – Bergi