使用jQuery提交数据序列化并通过cfloop循环数据

时间:2011-03-23 17:59:08

标签: jquery ajax coldfusion

我希望这是一个简单的解决办法,但这是我的情况。

用户输入记录编号并检索带有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>

2 个答案:

答案 0 :(得分:1)

当你正在进行POST时,“str”中提供的数据应该由ColdFusion解析并放入表单范围。尝试转储表单范围,看看你得到了什么:

<cfdump var="#form#">

答案 1 :(得分:0)

$(this).val().replace(/&/g, '^')工作了。我需要一个字符来避免数据库中的截断。