0

我创建了一个 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;
    });
}

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

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

我能够通过将 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);
    });
}

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

4

1 回答 1

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

现在这样称呼它:

$(function() {
     var  o = {};
     GetObject(1, 2, function(response) {
         o = response;
     });
});

由于内部GetObjectajax请求(异步过程)和ajaxsuccess函数执行后返回的对象,所以需要借助callback函数。

于 2012-08-16T19:09:14.843 回答