我有一个CF页面的库存搜索表单,frm_inv
发布回自己。 frm_inv
的主要表记录tbl_inv
使用tablesorter
。 隐藏输入(sort_list
)与 cfparam 结合使用,以跟踪tbl_inv
的{{1}}:
main.cfm
sortList
提交<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>
后,CF会使用frm_inv
中的sort_list
来恢复$(document).ready()
的排序顺序:
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());
});
});
但是我需要知道正确的javascript和coldfusion语法,以便专门为数组中的所有内容提供相关内容。
答案 0 :(得分:4)
要从ColdFusion变量创建JavaScript变量,您可以使用 toScript()
函数。
var #toScript(ListToArray(form.sort_list), "sort_list")#;
这可用于各种变量类型,如字符串,数组,结构等。
答案 1 :(得分:4)
将ColdFusion ...数组复制到JavaScript数组
为什么呢?在大多数情况下,HTTP只传输字符串,因此客户端和服务器复杂类型之间没有转换。除非你做的不仅仅是来回传递排序值,否则在客户端和服务器端阵列之间进行转换只是一种不必要的复杂问题。将值保留为字符串并在客户端进行任何拆分或解析更简单。
你没有真正解释你想要解决的问题,但是......当前的方法没有任何本质上的错误。但是,它可以简化一点。 此处无需再次输出变量:
(A)
var sort_list_str = <cfoutput>"#form.sort_list#"</cfoutput>;
由于您已将当前form.sort_list
值存储在隐藏表单字段中,因此上述内容是多余的。相反,只需用javascript即
(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));
});
});
答案 2 :(得分:-1)
需要在cfparam中使用数组的特定语法:ColdFusion CFParam Can Use Struct And Array Notation
<cfparam name="form.sort_list" type="array" default="#ArrayNew( 2 )#">