如何将AJAX返回的字符串转换为javascript对象数组

时间:2013-02-20 00:19:39

标签: javascript jquery ajax coldfusion

我正在使用jqGrid,并希望使用Coldfusion的ajax返回来构建colModel数组。

当我在客户端上创建数组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)来构建数组。

感谢您的帮助。 加里

1 个答案:

答案 0 :(得分:3)

在大多数主流浏览器中,

JSON.parse()supported。如果您需要支持IE7及更低版本,我相信您可以使用jQuery.parseJSON()来获得相同的结果。这两种方法都需要格式良好的JSON字符串。

顺便说一句,我建议将数组创建为结构的本机CF数组,然后使用serializeJSON()将其转换为JSON字符串。这将有助于通过手动编写JSON字符串来最大限度地减少您遇到的任何问题。