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

内部GetObjectにはAJAXリクエスト(非同期プロセス)と ajaxsuccess関数の実行後に返されるオブジェクトがあるため、関数の助けを借りる必要がありcallbackます。

于 2012-08-16T19:09:14.843 に答える