我对远程CFC进行了AJAX调用并使用JSON获取数据,这是我喜欢的,但是我无法输出数据而无需使用硬编码索引值猜测结构索引,例如:$(' #result')。val(obj.DATA [0] [3]);
如果我在CFC中更改查询时对[3]等索引进行硬编码,则必须更改AJAX结果。所以我想通过colmn名称引用返回的数据,但无法弄明白。这是我的AJAX和远程CFC的结果:
$.ajax({
url: '/app/components/MailingsReport.cfc',
//POST method is used
type: "POST",
//pass the data
data: {
method: "getCreativeByID",
creativeID: $('#hdnCreativeID').val(),
datasource: "shopping_cart",
queryformat: "column"
},
success: function(response){
var obj = $.trim(response);
var obj = jQuery.parseJSON(obj);
//alert("response");
$('#txtSubject').val( obj.COLUMNS["SUBJECT"][0] );
}
}
});
CFC:
<!---gets the data for the creative--->
<cffunction name="getCreativeByID" returntype="any" returnformat="JSON" access="remote" output="No">
<cfargument name="creativeID" required="Yes" type="numeric" />
<cfargument name="datasource" required="Yes" type="string" />
<!--- Select creatives and {clickurl} --->
<cfquery name="qGetCreativeData" datasource="#arguments.datasource#">
exec sp_get_email_creative @creativeid = #arguments.creativeID#
</cfquery>
<cfreturn qGetCreativeData />
</cffunction>
结果:
任何帮助将不胜感激!感谢。
答案 0 :(得分:2)
这适用于IE8及以下版本以外的所有内容。如果你需要完全兼容,你可以编写自己的indexOf JS方法。
$('#result').val( obj.DATA[0][ obj.COLUMNS.indexOf('Creativename') ] );
如果您需要,此页面包含有关在不支持直接支持的浏览器中将indexOf添加到数组原型的说明:http://www.tutorialspoint.com/javascript/array_indexof.htm
答案 1 :(得分:0)
您还可以使用SerializeJSON(data,true)以JSON的形式返回查询,并将列名称作为每行数据中的键。所以在你的cfc中,删除returnformat =“JSON”,并替换
与
在JavaScript代码中,您现在应该能够逐行遍历返回的JSON字符串的数据部分,并按列名引用值。