我希望这是一个简单的解决办法,但这是我的情况。
用户输入记录编号并检索带有X行数的表单(数据馈送来自外部数据馈送,因此无法控制数据的输入方式)。我正在使用jQuery序列化表单变量,然后通过ajax调用将此信息发送到另一个页面。在操作页面上,我通过&循环遍历数据。标志(coldfusion cfloop)。今天出现的问题是,在某些情况下,其中一个表单字段可能包含&符号(&),它会破坏操作页面上的循环。
任何人对如何解决这个问题都有任何建议吗?
这是我的ajax功能
var str = $("#ResourceRequest").serialize();
$.ajax({
type: "POST",
url: "index.cfm?do=misc.submitRequest&wddxString=" + encodeURIComponent(str),
data: str,
contentType: "application/json; charset=utf-8",
dataType: "html",
beforeSend: function() {
// $('#spinner').css("visibility","visible");
},
success: function(data) {
// $('#spinner').css("visibility","hidden");
$('#submitRequest_status').html(data);
$('#btnSave').html('Submit Request').attr('disabled','');
},
error: function() {
$('#btnSave').html('Submit Request').attr('disabled','');
// $('#spinner').css("visibility","hidden");
alert("We apologize for the inconvenience but\nwe were unable to process your request. [error: 258]");
// $('#submitRequest_status').html('');
}
});
这是我的CFLOOP
<cfset var i=0>
<cfloop list="#s#" index=curr_val delimiters="&">
<cfset attr=ListGetAt(curr_val & " ",1,"=")>
<cfset val=ListGetAt(curr_val & " ",2,"=")>
<cfif attr EQ "vpmo">
<cfset PROJVPMO=ListAppend(PROJVPMO,val)>
<cfelseif attr EQ "projectname">
<cfset PROJNAM=ListAppend(PROJNAM,val)>
<cfelseif attr EQ "pmt">
<cfset PROJPMT=ListAppend(PROJPMT,val)>
<cfelseif attr EQ "kickoff">
<cfset PROJKIC=ListAppend(PROJKIC,val)>
<cfelseif attr EQ "goLive">
<cfset SYSGOLI=ListAppend(SYSGOLI,val)>
</cfif>
答案 0 :(得分:1)
当你正在进行POST时,“str”中提供的数据应该由ColdFusion解析并放入表单范围。尝试转储表单范围,看看你得到了什么:
<cfdump var="#form#">
答案 1 :(得分:0)
$(this).val().replace(/&/g, '^')
工作了。我需要一个字符来避免数据库中的截断。