我有一个 CF 页面,它是库存搜索表单,frm_inv
post 返回到自身。 frm_inv
的主要表 记录,tbl_inv
,使用tablesorter
。 隐藏输入 (sort_list
) 与cfparam 结合使用以跟踪tbl_inv
的 >排序列表
:
主.cfm
<cfparam name="form.sort_list" type="string" default="1,0">
<form id="frm_inv" action="main.cfm" method="post">
<input name="sort_list" type="hidden" value="#form.sort_list#"/>
<table id="tbl_inv" class="tablesorter">
...
</table>
</form>
frm_inv
提交时,CF使用$(document).ready()
中的sort_list
恢复tbl_inv
的排序顺序:
$(document).ready(function(){
var sort_list_str = <cfoutput>"#form.sort_list#"</cfoutput>;
var sort_list = sort_list_str.split(",");
$("#tbl_inv").tablesorter({
textExtraction: ['complex'],
sortList:[[sort_list[0],sort_list[1]]]
}).bind("sortEnd", function(sorter) {
var sl = sorter.target.config.sortList;
$("input[name='sort_list']").val(sl.toString());
});
});
我宁愿使用数组也不愿像我现在所做的那样将逗号分隔的字符串转换为数组
<cfparam name="form.sort_list" type="string" default="1,0">
to
<cfparam name="form.sort_list" type="array" default="ArrayNew(2)">
但是,我需要了解正确的 javascript 和 coldfusion 语法,以便在数组中专门设置所有相关内容。
最佳答案
Copying a ColdFusion ... array into a JavaScript array
为什么?大多数情况下,HTTP 仅传输字符串,因此客户端和服务器复杂类型之间没有转换。除非你做的不仅仅是来回传递排序值,否则客户端和服务器端数组之间的转换只是一个不必要的复杂化。将值保留为字符串并在客户端进行任何拆分或解析会更简单。
您并没有真正解释您要解决的问题,但是……当前的方法并没有本质上的错误。但是,它可以简化一点。 这里不需要再次cfoutput变量:
(A)
var sort_list_str = <cfoutput>"#form.sort_list#"</cfoutput>;
因为您已经存储了当前的 form.sort_list
隐藏表单字段中的值,以上是多余的。相反,只需使用 javascript ie 读取字段的值
(B) var sort_list_str = $("input[name='sort_list']").val();
话虽如此,如果您真的更喜欢使用数组,则可以存储数组的 JSON 字符串表示形式。然后使用 parse() 和 stringify() 来回转换数组。与您当前方法的净效果相同,但在代码方面更简单一些。
表格:
<cfparam name="form.sort_list" default="[[1,0]]">
...
<input id="sort_list" name="sort_list"
type="hidden" value="#encodeForHTML(form.sort_list)#" />
...
JQuery:
$(document).ready(function(){
$("#tbl_inv").tablesorter({
textExtraction: ['complex'],
sortList: JSON.parse($("#sort_list").val())
}).bind("sortEnd", function(sorter) {
var sort_arr = sorter.target.config.sortList;
$("#sort_list").val(JSON.stringify(sort_arr));
});
});
关于javascript - 将 ColdFusion cfparam 数组复制到 JavaScript 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35234483/