Javascript将对象从包含文件传递到页面

jon*_*aze 0 javascript jquery object instance

我创建了一个javascript对象和一个函数来构建一个新的对象实例.我现在需要在我的页面上使用这个对象但是没有运气,我觉得我错过了一些东西.

JS包含文件

function MyObject() {
    this.ID = 0;
    this.Name = "";
}

function GetObject(param1, param2) {
    //ajax call to get json string
    $.ajax({ //leaving out details this part works
    success: function(data) {
        var jsonData = $.parseJSON(data.d);

        var myObj = new MyObject();
        myObj.ID = jsonData[0].ID;
        myObj.Name = jsonData[0].Name;

        return myObj;
    });
}
Run Code Online (Sandbox Code Playgroud)

此调用工作正常,但是当我尝试访问我得到的页面上的数据时 undefined

<script type="text/javascript">
    $(function() {
        var o = GetObject(1, 2);
    });
</script>
Run Code Online (Sandbox Code Playgroud)

通过将DOM对象传递给函数并将其分配到那里,我能够使它工作.

function GetObject(param1, param2, domObj) {
    //ajax call to get json string
    $.ajax({ //leaving out details this part works
    success: function(data) {
        var jsonData = $.parseJSON(data.d);

        var myObj = new MyObject();
        myObj.ID = jsonData[0].ID;
        myObj.Name = jsonData[0].Name;

        domObj.text(myObj);
    });
}
Run Code Online (Sandbox Code Playgroud)

但是这对我的应用程序不起作用,因为我拉了很多对象,并且只想在页面上引用它们.我错过了什么?任何帮助是极大的赞赏.

the*_*dox 5

只是辞职你GetObject这样:

function GetObject(param1, param2, callback) {
    //ajax call to get json string
    $.ajax({ //leaving out details this part works
    success: function(data) {
        var jsonData = $.parseJSON(data.d);

        var myObj = new MyObject();
        myObj.ID = jsonData[0].ID;
        myObj.Name = jsonData[0].Name;

        // pass myObj via callback function parameter
        return callback( myObj );
    });
}
Run Code Online (Sandbox Code Playgroud)

现在称它为:

$(function() {
     var  o = {};
     GetObject(1, 2, function(response) {
         o = response;
     });
});
Run Code Online (Sandbox Code Playgroud)

因为,在ajax 函数执行之后GetObject有一个AJAX请求(异步进程)和对象success,所以你需要借助callback函数.