2011-03-23 49 views
0

我希望这是一个简单的修复,但这是我的情况。使用jQuery提交数据通过cfloop序列化和循环数据

用户输入一个记录号码,并返回一个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

我已经添加了一个例程来检查数据的表单域。我应该可以检查val()for和替换它。 '(this).text()。replace('&','gocowboys');'不工作,也不是'$(this).val()。replace('&','gocowboys'); ' – HPWD 2011-03-23 19:39:07

+0

我从[link](http://stackoverflow.com/questions/2950357/jquery-removing-character-from-string)得到了上述想法。 – HPWD 2011-03-23 19:41:20

+0

'$(this).val()。replace(/&/ g,'gocowboys')'做了诡计。 – HPWD 2011-03-23 20:13:46

回答

0

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

1

当你正在做一个POST在“海峡”提供的数据应该由ColdFusion的解析,并把表单范围。尝试倾销表格示波器,看看你得到:

<cfdump var="#form#"> 
+0

我相信这是一个比CF解析问题更多的JavaScript问题。我使用FF和萤火虫来查看我要提交的内容,并且我可以看到&正在通过。如果我从输入字段中删除&,该过程将正常工作,并且cfloops按预期执行。不知何故,我需要jQuery在表单字段BEFORE中通过jQuery序列化函数运行时将&更改为不同的字符串,例如f。一旦数据传递到循环中,我可以让cf将ƒ字符还原到&...至少这是我的思考过程。 :) – HPWD 2011-03-23 19:29:24