我有一个关于在coldfusion中使用ajax传递的参数的问题。所以我有三个论点,我通过date1,date2和meetingDate。我必须比较其中三个参数并根据日期返回字符串。这是我的逻辑:
<cfset sigDate1 = dateFormat(trim(arguments.date1),'yyyy/mm/dd')>
<cfset sigDate2 = dateFormat(trim(arguments.date2),'yyyy/mm/dd')>
<cfset meetDate = dateFormat(URLDecode(arguments.meetingDate),'yyyy/mm/dd')>
<cfelseif (sigDate1 LT meetDate) OR (sigDate2 LT meetDate)>
<cfset myResult = "blockDate">
<cfelse>
我当前的代码有一个问题,如果我只传递这两个日期中的一个(date1或date2),我将永远得到&#34; blockDate&#34;用我的ajax函数返回。我发现了问题,如果我只是传递date1而不是date2,那么无论如何我仍然会执行。所以我试图通过使用一个额外的cfif解决这个问题,并检查我的date1和date2是否是undefined但是没有解决问题。如果有人知道如何解决这个问题请告诉我。
提前致谢。
答案 0 :(得分:1)
有几种不同的方法可以解决这个问题。据我所知;参数总是存在,但你担心它们可能有空白值。
以下是一些您应该能够适应的想法,以帮助您入门: 使用默认值
<cfset sigDate1 = iif(isDate(trim(arguments.date1),'dateFormat(trim(arguments.date1),'yyyy/mm/dd')','[default value]')/>
<cfset sigDate2 = iif(isDate(trim(arguments.date2),'dateFormat(trim(arguments.date2),'yyyy/mm/dd')','[default value]')/>
<cfset meetDate = iif(isDate(trim(URLDecode(arguments.meetingDate),'dateFormat(trim(URLDecode(arguments.meetingDate),'yyyy/mm/dd')','[default value]')/>
or (test dates)
<cfif isDate(trim(arguments.date1)) and isDate(trim(arguments.date2)) and isDate(URLDecode(arguments.meetingDate))>
<cfset sigDate1 = dateFormat(trim(arguments.date1),'yyyy/mm/dd')/>
<cfset sigDate2 = dateFormat(trim(arguments.date2),'yyyy/mm/dd')/>
<cfset meetDate = dateFormat(URLDecode(arguments.meetingDate),'yyyy/mm/dd')/>
<cfelse>
<--- error code --->
</cfif>
or (use try block)
<cftry>
<cfset sigDate1 = dateFormat(trim(arguments.date1),'yyyy/mm/dd')/>
<cfset sigDate2 = dateFormat(trim(arguments.date2),'yyyy/mm/dd')/>
<cfset meetDate = dateFormat(URLDecode(arguments.meetingDate),'yyyy/mm/dd')/>
<cfcatch type="expression">
<--- error code --->
</cfcatch>
</cftry>