いくつかの調査を行い、CF 2016 に取り組んだ後、1 つの問題が見つかりました。JQuery/Ajax を使用してフォーム データを送信します。テキスト領域の 1 つにセミ カラムを入力する;
と、シンボルが に変換され;
ます。セミカラムが HTML コードに変換される原因がわかりません。送信する前にデータフォームを確認しました。Test;
コンソールに入力すると、次のようになりますTest%3B
。次に、フォーム スコープを cfmail の cffunction の一番上にダンプしました。フォーム フィールドの値は次のようになりTest;
ます。HTML/JQuery コードで作成した例を次に示します。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=10; IE=11" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Test Page</title>
<script type="text/javascript" src="JQuery/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="JQuery/jquery-ui.js"></script>
</head>
<body>
<div id="myContainer">
<form name="myForm" id="myForm" method="POST" action="#" class="frmSubmitData">
<fieldset>
<legend>Test Form</legend>
<div>
<span style="display: inline-block; vertical-align:top; font-weight:bold;">Comments:</span>
<textarea name="my_comments" id="my_comments" row="2" cols="55" required></textarea>
</div>
<div>
<input type="submit" name="frmSubmit" id="frmSubmit" value="Submit" />
</div>
</fieldset>
</form>
</div>
<script>
$('.frmSubmitData').on('submit', function(e){
e.preventDefault();
var formData = $('#myForm').serialize();
console.log(formData);
$.ajax({
type: 'POST',
encoding:"UTF-8",
url: 'Components/myTest.cfc?method=testForm',
data: formData,
dataType: 'json'
}).done(function(obj){
if(obj.STATUS === 200){
console.log(obj.FORMDATA);
}else{
alert('Error');
}
}).fail(function(jqXHR, textStatus, errorThrown){
alert("Error: "+errorThrown);
});
});
</script>
</body>
</html>
常温核融合機能の例:
<cfcomponent>
<cfsetting enablecfoutputonly="yes" showdebugoutput="no" requesttimeout="3600">
<cffunction name="testForm" access="remote" output="true" returnformat="JSON">
<cfmail to="myemail@gmail.com" from="myemail@gmail.com" subject="Test Form Scope" type="text">
<cfloop collection="#form#" item="theField">
<cfoutput>#theField# = #form[theField]#<br></cfoutput>
</cfloop>
</cfmail>
<cfset fnResults = StructNew()>
<cfset fnResults.message = "Record successfully saved.">
<cfset fnResults.status = "200">
<cfset fnResults.formdata = #FORM#>
<cfreturn fnResults>
</cffunction>
</cfcomponent>
このコードは CF10 で正常に動作しましたが、CF 2016 にアップグレードすると、この問題が発生しました。ここでも、以前とまったく同じクライアント側コードが使用され、セミカラム チャーターは変換されませんでした。誰かが同じ問題を経験し、これを修正する方法を知っている場合は、私に知らせてください. ありがとうございました!