jquery ajax 回调 Class 变量未定义
jquery ajax callback Class variable is undefined
我想从文件中检索数据,并在完成后处理它。我的 Class DataService.js 正在做它的工作,但从外面看,我无法获取加载的数据。下面是我的代码。
main.js
.
.
.
$('#loadMyData').on('click',function(event) {
var m = dataService.loadLanguage().done(dataService.handleData);
$.when(m).done(function() {
console.log(dataService.loadedLanguage); // undefined
});
});
.
.
.
DataService.js
class DataService {
loadedLanguage;
constructor() {
this.loadedLanguage;
}
loadLanguage() {
return $.ajax({
url: "php/services/readLanguage.php",
type: "GET",
async: true,
data: {data: "test"},
dataTyp: 'json'
});
};
handleData(data) {
this.loadedLanguage = JSON.parse(data);
console.log(this.loadedLanguage); // ok
}
}
为什么 'loadedLanguage' 仍然未定义,即使它已成功加载。
$.when 的语法类似于
$.when( { testing: 123 } ).done(function( x ) {
alert( x.testing ); // Alerts "123"
});
你应该这样写。
$('#loadMyData').on('click',function(event) {
var m = dataService.loadLanguage().done(dataService.handleData);
$.when(m).done(function(responce) {
console.log(responce); // You should catch response like this
});
});
我想从文件中检索数据,并在完成后处理它。我的 Class DataService.js 正在做它的工作,但从外面看,我无法获取加载的数据。下面是我的代码。
main.js
.
.
.
$('#loadMyData').on('click',function(event) {
var m = dataService.loadLanguage().done(dataService.handleData);
$.when(m).done(function() {
console.log(dataService.loadedLanguage); // undefined
});
});
.
.
.
DataService.js
class DataService {
loadedLanguage;
constructor() {
this.loadedLanguage;
}
loadLanguage() {
return $.ajax({
url: "php/services/readLanguage.php",
type: "GET",
async: true,
data: {data: "test"},
dataTyp: 'json'
});
};
handleData(data) {
this.loadedLanguage = JSON.parse(data);
console.log(this.loadedLanguage); // ok
}
}
为什么 'loadedLanguage' 仍然未定义,即使它已成功加载。
$.when 的语法类似于
$.when( { testing: 123 } ).done(function( x ) {
alert( x.testing ); // Alerts "123"
});
你应该这样写。
$('#loadMyData').on('click',function(event) {
var m = dataService.loadLanguage().done(dataService.handleData);
$.when(m).done(function(responce) {
console.log(responce); // You should catch response like this
});
});