2

如果 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
        });
    }   
});

+

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

4

2 回答 2

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>
于 2012-09-26T22:53:08.347 回答
0

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

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

该方法的说明:

<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>
于 2012-09-26T23:06:19.537 回答