【发布时间】:2017-08-04 18:29:24
【问题描述】:
我正在为仪表板页面制作一个过滤器,其中包含从 ajax 调用提供给我的数据库的一堆图表,并从中制作一个 json 结构。我对过滤器有点迷茫,因为基本上每个字段都是可选的。现在我正在使用 jquery 和 formvalidator.io 提交 from。它将 from 值发送到最初绘制我的图表的函数。我迷路的地方是在我的coldfusion处理程序中,它将数据传递给coldfusion函数。如何传递动态数量的参数?
代码:
使用 jquery 提交表单:
$('#overviewFilter').formValidation({
framework: 'bootstrap4'
}).on("success.form.fv", function(e) {
// Prevent form submission
e.preventDefault();
projectOverview();
});
projectOverview 函数的Json 部分。我在那里有 serializeArray() 位,但我只是在试验,这可能有点离谱。
function projectOverview() {
var formString = $('#overview_filter').serializeArray();
$.getJSON('/a_assets/ajax/a_cms.cfm',{cms_action:'task_complete_history',form_data:formString}, function (data) {
//charts
});
Coldfusion Handeler 代码。我在函数中有#url# 参数,因为我正在试验。
<cfif structKeyExists(url,"cms_action") and url.cms_action eq 'task_complete_history'>
<cfobject name="cms" component="a_assets.cfc.cms">
<cfset TaskHistoryNewComplete = cms.fnTaskHistoryNewComplete(#url#)>
<cfoutput>#TaskHistoryNewComplete#</cfoutput>
</cfif>
Coldfusion CFC。我现在只有一个 formData 参数。对函数的每次调用都是一个查询,需要我要查找的值来过滤图表。
<cffunction name="fnTaskHistoryNewComplete" returntype="any" output="false">
<cfargument name="formData" required="false">
<cfset mydata = []>
<cfset mydatatemp = structNew()>
<cfset progressObj = []>
<cfset TaskIntake = fnTaskIntake()>
<cfloop query="TaskIntake">
<cfset mydatatemp2 = structNew()>
<cfset mydatatemp2['Month'] = Month>
<cfset mydatatemp2['Completed'] = Completed>
<cfset mydatatemp2['Opened'] = Opened>
<cfset mydatatemp2['Late'] = Late>
<cfset arrayAppend(progressObj, mydatatemp2)>
</cfloop>
<cfset mydatatemp['progress'] = progressObj>
<cfset userObj = []>
<cfset TaskUserIntake = fnTaskUserIntake()>
<cfloop query="TaskUserIntake">
<cfset mydatatemp2 = structNew()>
<cfset mydatatemp2['UserId'] = UserRcId>
<cfset mydatatemp2['Fname'] = Fname>
<cfset mydatatemp2['Lname'] = Lname>
<cfset mydatatemp2['Assigned'] = TaskCount>
<cfset arrayAppend(userObj,mydatatemp2)>
</cfloop>
<cfset mydatatemp['users'] = userObj>
<cfset typeObj = []>
<cfset TaskTypeIntake = fnTaskTypeIntake()>
<cfloop query="TaskTypeIntake">
<cfset mydatatemp2 = structNew()>
<cfset mydatatemp2['TypeId'] = NFTypeRcId>
<cfset mydatatemp2['Name'] = NFTDescription>
<cfset mydatatemp2['TypeCount'] = TaskCount>
<cfset arrayAppend(typeObj,mydatatemp2)>
</cfloop>
<cfset mydatatemp['types'] = typeObj>
<cfset tagObj = []>
<cfset TaskTagIntake = fnTaskTagIntake()>
<cfloop query="TaskTagIntake">
<cfset mydatatemp2 = structNew()>
<cfset mydatatemp2['TagId'] = TagRcId>
<cfset mydatatemp2['Name'] = Name>
<cfset mydatatemp2['TagCount'] = TaskCount>
<cfset arrayAppend(tagObj,mydatatemp2)>
</cfloop>
<cfset mydatatemp['tags'] = tagObj>
<cfset gameObj = []>
<cfset TaskGameIntake = fnTaskGameIntake()>
<cfloop query="TaskGameIntake">
<cfset mydatatemp2 = structNew()>
<cfset mydatatemp2['GameId'] = GameRcId>
<cfset mydatatemp2['Name'] = GameName>
<cfset mydatatemp2['GameCount'] = TaskCount>
<cfset arrayAppend(gameObj,mydatatemp2)>
</cfloop>
<cfset mydatatemp['games'] = gameObj>
<cfset platformObj = []>
<cfset TaskPlatformIntake = fnTaskPlatformIntake()>
<cfloop query="TaskPlatformIntake">
<cfset mydatatemp2 = structNew()>
<cfset mydatatemp2['PlatformId'] = PlatformRcId>
<cfset mydatatemp2['Name'] = Name>
<cfset mydatatemp2['PlatformCount'] = TaskCount>
<cfset arrayAppend(platformObj,mydatatemp2)>
</cfloop>
<cfset mydatatemp['platforms'] = platformObj>
<cfset genreObj = []>
<cfset TaskGenreIntake = fnTaskGenreIntake()>
<cfloop query="TaskGenreIntake">
<cfset mydatatemp2 = structNew()>
<cfset mydatatemp2['GenreId'] = GenreRcId>
<cfset mydatatemp2['Name'] = Name>
<cfset mydatatemp2['GenreCount'] = TaskCount>
<cfset arrayAppend(genreObj,mydatatemp2)>
</cfloop>
<cfset mydatatemp['genres'] = genreObj>
<cfset arrayAppend(mydata,mydatatemp)>
<cfset data = structNew()>
<cfset data['data'] = mydata>
<cfset TaskHistoryNewComplete = serializeJson(mydata)>
<cfreturn TaskHistoryNewComplete>
</cffunction>
我确信我以前做过,但我一生都记不起我是怎么做到的。
【问题讨论】:
标签: javascript jquery json ajax coldfusion