jQuery ajax回调类变量未定义

时间:2019-03-18 07:54:04

标签: jquery ajax callback 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”仍未定义,即使其已成功加载。

1 个答案:

答案 0 :(得分:0)

$。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
    });

});