jquery ajax callback类变量未定义

问题描述 投票:0回答:1

我想从文件中检索数据,并在完成后处理它。我的类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'仍未定义,即使它已成功加载。

jquery ajax callback undefined
1个回答
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
    });

});
© www.soinside.com 2019 - 2024. All rights reserved.