检查ColdFusion中是否存在参数

时间:2016-08-16 16:26:21

标签: ajax coldfusion

我有一个关于在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但是没有解决问题。如果有人知道如何解决这个问题请告诉我。

提前致谢。

1 个答案:

答案 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>