2016-08-16 3 views
-1

Ich habe eine Frage zu Argumenten, die mit Ajax in Coldfusion übergeben werden. Also habe ich drei Argumente, die ich date1, date2 und meetingDate übergebe. Ich muss drei dieser Argumente vergleichen und die Zeichenfolge basierend auf den Daten zurückgeben. Hier ist meine Logik:Überprüfen, ob in ColdFusion ein Argument vorhanden ist

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

Mein aktueller Code ein Problem hat, wenn ich nur eine dieser beiden Daten übergeben (date1 oder date2) Ich werde immer bekommen „blockDate“ kehrte mit meiner Ajax-Funktion. Ich habe das Problem erkannt und wenn ich nur date1 aber nicht date2 passiere, wird mein elseif immer noch ausgeführt, egal was passiert. Also habe ich versucht, dieses Problem mit einem zusätzlichen cfif zu beheben und überprüfen, ob mein date1 und date2Defined ist, aber das hat das Problem nicht behoben. Wenn jemand eine Idee hat, wie man diesen Bugg reparieren kann, lass es mich wissen.

Vielen Dank im Voraus.

+1

Ich habe keinen CFIF sehen. –

+3

Machen Sie die Argumente obligatorisch oder geben Sie ihnen Standardwerte, je nachdem, was Ihren Geschäftsanforderungen entspricht. –

+0

... Trotz des Fragetitels verwendet der Code alle drei (3) Argumente, als ob sie * immer * existieren würden. Verwerfen Sie Argumente beim Aufruf der Funktion, zB 'yourFunctionName (date1, meetingDate)' ODER geben Sie einfach einen leeren Wert 'yourFunctionName (date1," ", meetingDate)'? – Leigh

Antwort

1

Es gibt ein paar verschiedene Möglichkeiten, dies zu umgehen. So wie ich es verstehe; Die Argumente existieren immer, aber Sie sind besorgt, dass sie leere Werte haben können.

Hier sind einige Ideen, die Sie sollten Sie anpassen können, erhalten begonnen: Standardwerte verwenden

<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> 
Verwandte Themen