2017-10-26 6 views
0

Ich habe das Formular, wo Benutzer den Wert aus der Liste auswählen müssen. Liste wird von Administratoren erstellt. In einer der Listen gibt es eine Option für den Benutzer, um den Wert NO auszuwählen, der für einen reservierten Code steht. So etwas wie Not Occupied. Also verwende ich JQuery und AJAX, um mit dem Server zu kommunizieren. Am Backend verwende ich ColdFusion 9 auf meinem Produktionsserver. Also, um NO zurück zu bringen, muss ich das mit 'NO ' mit dem Raum umwandeln. Wenn ich diese Funktion nicht ausführe, wird false Wert auf der Clientseite zurückgegeben. Hier ist ein Beispiel für meine Code-Konvertierung:Verhindern, dass YES/NO-Werte in "True/False" umgewandelt werden Coldfusion 9?

<cfset convertYesNo = { 
    YES : "YES ", 
    NO : "NO " 
}> 

<cfset qryRecs['value'] = URLEncodedFormat(structKeyExists(convertYesNo, myInfo[CurrentRow]) ? convertYesNo[myInfo[CurrentRow]] : myInfo[CurrentRow])> 

Code oben funktionierte gut auf meiner Entwicklungs-Website. Der einzige Unterschied besteht darin, dass auf der Entwicklung haben wir Coldfusion 10 und auf dem Live haben wir Coldfusion 9. Also, wenn ich den Code zog ich zu leben begann Fehlermeldung erhalten:

ColdFusion was looking at the following text&#x3a;<p>&#x7b;</p><p>The CFML compiler was processing&#x3a;<ul><li>A cfset tag beginning on line 1071, column 18.<li>A cfset tag beginning on line 1071, column 18. 

<pre>1069 :   }&gt; 
1070 :  
<b>1071 :  &lt;cfset convertYesNo = {</b> 
1072 :   &quot;Yes&quot; : &quot;Yes &quot;, 
1073 :   &quot;No&quot; : &quot;No &quot; 
</pre> 

Ich habe versucht, Anführungszeichen zu setzen um JA und Nein, aber das hat nicht geholfen. Wenn jemand weiß, wie Sie dieses Problem beheben können, lassen Sie es mich wissen. Danke im Voraus!

+0

Sie Javacast verwenden ("strin g "," Nein ") oder wird das automatisch wieder in etwas unerwünschtes zurückverwandelt? Bei der Konvertierung in JSON verwende ich die JSONUtil-Bibliothek und verwende JavaCast ("boolean", 1), um die in JSON enthaltenen TRUE/FALSE-Werte ohne Anführungszeichen zu erstellen. –

Antwort

6

Ich denke, dass Strukturnotation für CF9 diese Syntax nicht unterstützt. Versuchen Sie Folgendes (= anstelle von : Trennen von Schlüssel-Wert-Paaren).

<cfset convertYesNo = { 
    YES = "YES ", 
    NO = "NO " 
}> 
+0

Nun, das ist richtig. Danke für Ihre Hilfe! –

+0

Das ist der zweite Fehler, den ich bekomme. Weißt du, warum dies in CF9 angezeigt würde: SyntaxError: JSON.parse: erwartet ',' oder '}' nach Eigenschaftswert in Objekt in Zeile 1 Spalte 13714 der JSON-Daten –

+0

@espresso_coffee Ich bin mir nicht sicher über den Kontext. Ohne auf den Code zu schauen, kann ich nichts sicher sagen / – RRK

0

<cfset qryRecs['value'] = URLEncodedFormat(structKeyExists(convertYesNo, myInfo[CurrentRow]) ? convertYesNo[myInfo[CurrentRow]] : myInfo[CurrentRow])>

Structs (HashTables) ist groß bei schnellem Auffinden von Schlüsseln, aber man 2 Schlüssel nur hier, also ein viel effizientere Konstrukt wäre (zB in cfscript Syntax):

qryRecs['value'] = URLEncodedFormat(
    listFindNoCase("YES,NO", myInfo[CurrentRow]) ? 
     uCase(myInfo[CurrentRow]) & " " 
      : 
     myInfo[CurrentRow] 
); 

Obwohl zur besseren Lesbarkeit und Code-Wartung Sie berücksichtigen sollten, es in mehrere Aussagen zu brechen:

value = myInfo[CurrentRow]; 
if (value == "YES" || value == "NO")   // use EQ operator in CFML syntax 
    value = uCase(value) & " "; 

qryRecs['value'] = URLEncodedFormat(value); 
Verwandte Themen