2011-12-14 21 views
1

當試圖對包含對象數組的對象進行串化處理時,當我看到有值時,我得到一個空數組。嘗試使用JSON對包含對象數組的對象進行串聯操作

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顯示空的結果?

+0

invoiceObj.filterDto.Expressions = tempArray; – cjsmith

+0

你在做什麼JSON.stringify()?你沒有向我們展示。我猜你沒有在做正確的事情JSON.stringify()。僅供參考,將變量初始化爲對象完全沒有任何作用,然後您只需將其分配給其他對象。 – jfriend00

+0

我可以在該函數的出口下方做var test = JSON.stringify(invoiceObj.filterDto),並獲得相同的結果。我稍後在jqGrid文章中調用stringify,但問題在於如何從JSON格式化此對象 – cjsmith

回答

0

您粘貼的代碼工作正常,證明爲by this code(console.log中的JSON序列化)。

在序列化嘗試之前沒有調用fnBuildFilterValues的問題嗎?你的問題是你的選擇器沒有產生任何結果嗎?該問題似乎與粘貼的代碼不同。

+0

是的,這就是發生了什麼事情。我調用fnBuildFilterValues,然後在函數返回後重新加載一個網格:$('#gridMaster')。trigger(「reloadGrid」);但它的重新加載沒有更新的postData,並且每次使用第一個輸入postdata(當然是空的版本)感謝您的推送。 – cjsmith