循环使用Coldfusion通过jquery ajax例程提交的数据

时间:2012-09-26 22:16:47

标签: coldfusion

如果是FF firebug窗口,我看到这是传递给我的coldfusion操作页面:

RowOrder[]=&RowOrder[]=row_5&RowOrder[]=row_2&RowOrder[]=row_1&RowOrder[]=row_3&RowOrder[]=row_4&RowOrder[]=row_6&RowOrder[]=row_7&RowOrder[]=row_8&RowOrder[]=row_11

现在我需要遍历这个来获取更新的排序顺序,但是由于[],我遇到了问题。我怎么能循环这个,以便我可以更新我的表???我希望这很容易,但我显然错过了一些东西。

+ 我正在使用jquery插件(http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/)。的 +

以下是我用于循环提交数据的代码:

<cfif StructKeyExists(form, "RowOrder")>
<!---<cfset variables.Order = ReReplaceNoCase(form.RowOrder, "(&){0,1}row_\[\]=", ",", "all") />--->    
<cfset variables.Order = ReplaceNoCase(form["RowOrder[]"],"row_","","all")>
<cfloop from="1" to="#ListLen(variables.Order)#" index="index">
<cfquery name="qryOrder" datasource="#dsn#">
update  SystemTypes
set Order = <cfqueryparam value="#index#" cfsqltype="cf_sql_integer" />
where WETypeNum = <cfqueryparam value="#ListGetAt(variables.Order, index)#" cfsqltype="cf_sql_integer" />
</cfquery>
</cfloop>
</cfif>

+ 我正在使用的ajax代码如下:

$("#RowOrder").tableDnD({
    onDrop: function(table, row) {
        var RowOrderData = $.tableDnD.serialize();
        $.ajax({
            type: 'POST',
            url: '../../ajax/UpdateListingOrder.cfm',
            cache: false,
            data:  RowOrderData
        });
    }   
});

+

+ 表示发布问题后添加的信息

2 个答案:

答案 0 :(得分:1)

问题如何显现?您是否收到错误,查询未执行,...?

转储FORM范围以验证传递的字段名称?它看起来像FORM['RowOrder[]']而不是form.RowOrder。在这种情况下,您需要使用:

<cfif StructKeyExists(form, "RowOrder[]")>
    <cfset variables.Order = ReReplaceNoCase(form["RowOrder[]"], "(&){0,1}row_\[\]=", ",", "all") />
    ... rest of code ...
<cfelse>
    oops, that variable name does not exist
</cfif>

答案 1 :(得分:0)

你能不能匹配数字而不是替换?

我在循环中完成了正则表达式匹配 - 然后您可以一次只关注字符串的一部分。

approch的例证:

<cfif structKeyExists(form, "rowOrder")>
  <cfset data = listToArray(form.rowOrder, "&")/>
  <cfif not arrayIsEmpty(data)>
    <cfloop form="1" to="#arrayLen(data)#" index="index">
      <cfset match = reFind("[1-9][0-9]+", data[index], 1, true)/>
      <cfif arraySum(match)>
        <cfset weTypeNumber = val(mid(data[index], match["pos"], match["len"]))/> 
        <cfquery name="qryOrder" datasource="#dsn#">
         UPDATE
            system_types
          SET 
            order = <cfqueryparam cfsqltype="cf_sql_integer" value="#index#"/>
          WHERE
            we_type_num = <cfqueryparam cfsqltype="cf_sql_integer" value="#weTypeNumber#"/>
        </cfquery>
      </cfif>
    </cfloop>
  </cfif>
</cfif>