1

オブジェクトの配列を保持するオブジェクトを文字列化しようとすると、値があることがわかると空の配列が表示されます。

 filterDto: {
            Expressions: []   
        },

/* Using a tempArray to see if its an object issue of my filterDto.Expressions */

fnBuildFilterValues: function() {

            var invoiceObj = this;

             var tempArray = new Array();


              $("#tblExpressions tr").each(function() {

                var doWeAddRow = false;
                var filterObject = {
                    "Field": {},
                    "Condition": {},
                    "DataValue": {}
                };

                $(this).find(":input").each(function() {

                    if (  $(this).attr('name') === 'ddlFieldExp' ) {
                        filterObject.Field =  $(this).val();
                    }
                    if (  $(this).attr('name') === 'ddlConditionExp' ) {
                        filterObject.Condition =  $(this).val();
                    }
                     if (  $(this).attr('name') === 'tbDataExp' ) {
                        filterObject.DataValue =  $(this).val();
                    }

                }); /* Inner loop */

              tempArray.push(filterObject); 

              }); /* Outer loop */

              invoiceObj.filterDto.Expressions = tempArray;
        },

そして、私が欲しいのは、次のようなものを使用することです。

     var objToString = {};
     objToString = JSON.stringify(invoiceObj.filterDto)

解決策として={}を使用しようとしましたが、配列にデータが入力されると、ObjToStringが空になります。これは次のように表示されます。 {"Expressions":[]}

右側の部分でVSでクイックウォッチを実行すると、JSON.Stringifyは次のようになります。

    JSON.stringify(invoiceObj.filterDto) 
    "{"Expressions":[{"Field":"6","Condition":"0","DataValue":"2"}]}"   String

しかし、なぜObjToStringが空の結果を示しているのでしょうか。

4

1 に答える 1

0

貼り付けたコードは、このコード(console.logのJSONシリアル化)で証明されているように正常に機能しています。

fnBuildFilterValuesシリアル化を試みる前に呼び出されなかった問題はありますか?セレクターのいずれかが結果をもたらさないという問題はありますか?貼り付けたコードに問題はないようです。

于 2011-12-14T23:03:57.967 に答える