2013-02-20 41 views
1

我正在使用jqGrid並希望使用從ColdFusion返回的ajax來構建colModel數組。如何將AJAX返回的字符串轉換爲javascript數組對象

當我在下面的客戶端上創建數組cm時,這可以工作。

function subTab(obj,id,tab){ 
var param={id:id,tab:tab} 
http('POST','cfc/view/'+obj+'.cfc?method=view',subTab_RTN,param); 
} 
function subTab_RTN(obj){ 
$("#detail").html(obj.html); 
if(obj.grid.display){ 
var cm; 
switch(obj.grid.tab){ 
case "docs": 
cm=[{name:'contactID',index:'contactID',hidden:true}, 
{name:'docName',index:'docName',width:200,label:'Document Name'}, 
{name:'docType',index:'docType',width:200,label:'Document Type'}, 
{name:'campaign',index:'campaign',width:200,label:'Campaign'}, 
{name:'campaignCode',index:'campaignCode',width:125,label:'Campaign Code'}, 
{name:'campaignType',index:'campaignType',width:125,label:'Campaign Type'}, 
{name:'downloadDate',index:'downloadDate',width:125,label:'Download  Date',formatter:'date'}]; 
break; 
} 
$("#subTabGridTbl").jqGrid({ 
url:obj.grid.url, 
datatype: "json", 
colModel:cm, 
... 

我不過喜歡創建像在服務器上的陣列:

<cfset rtn.grid.cols="[{name:'contactID',index:'contactID',hidden:true}, 
{name:'docName',index:'docName',width:200,label:'Document Name'}, 
{name:'docType',index:'docType',width:200,label:'Document Type'}, 
{name:'campaign',index:'campaign',width:200,label:'Campaign'}, 
{name:'campaignCode',index:'campaignCode',width:125,label:'Campaign Code'}, 
{name:'campaignType',index:'campaignType',width:125,label:'Campaign Type'}, 
{name:'downloadDate',index:'downloadDate',width:125,label:'Download Date',formatter:'date'}]" /> 

,然後使用返回的OBJ(obj.grid.cols)構建陣列。

感謝您的幫助。 Gary

+0

使其有效JSON,然後將其解析爲JS對象。 – Blender 2013-02-20 00:22:33

回答

3

JSON.parse()supported在大多數主流瀏覽器中。如果您需要支持IE7及以下版本,我相信您可以使用jQuery.parseJSON()獲得相同的結果。兩種方法都需要格式正確的JSON字符串。另外,我建議將你的數組作爲本地CF數組結構體,然後使用serializeJSON()將它轉換爲JSON字符串。這將有助於儘量減少您嘗試手動編寫JSON字符串時遇到的任何問題。

+0

感謝Sean和所有人,使其有效JSON並使用jQuery.parseJSON()使它工作。將數組構建爲一個CF數組結構是一個好主意,並且可以幫助我使用其他網格。唯一的「難題」是我在創建結構時不得不使用數組符號。點符號做出了不被jqGrid識別的鍵UPPER情況。 – garyv 2013-02-20 01:21:29

+1

更好的解決方案(恕我直言):http('POST','cfc/view /'+ obj +'.cfc?method = view&returnFormat = json',subTab_RTN,param);然後讓CFC方法簡單地返回結構數組。這樣,如果你碰巧需要在內部調用相同的方法,你將得到一個ColdFusion數組,而不是一個JSON字符串。 – 2013-02-20 04:24:44

相關問題