2016-08-16 106 views
-1

我对在Coldfusion中使用ajax传递的参数有疑问。所以我有三个参数,我传递了date1,date2和meetingDate。我必须比较其中三个参数,并根据日期返回字符串。这里是我的逻辑:检查ColdFusion中是否存在参数

<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的),我总是会得到“blockDate”我的AJAX功能恢复。我发现了这个问题,如果我只是传递date1而不是date2,那么elseif仍然会被执行,无论如何。所以我试图解决这个问题,使用一个额外的cfif,并检查我的date1和date2是否定义,但没有解决问题。如果任何人有任何想法如何解决这个BUG请让我知道。

在此先感谢。

+1

我没有看到一个CFIF。 –

+3

使参数成为必需的或给予它们默认值,无论哪个满足您的业务需求。 –

+0

...尽管问题标题,发布的代码使用所有三(3)参数,就好像它们总是存在一样。当函数被调用时,实际上是否省略参数,即'yourFunctionName(date1,meetingDate)'或者简单地传入一个空值'yourFunctionName(date1,“”,meetingDate)'? – Leigh

回答

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>