我正在尝试处理来自其他 php 页面的 aoColumns 的值。但随后它就无法正常运行,而如果我使用静态值,那么它就可以工作。 我的代码是这样的: 在php页面中
$aoColumn = array("null","null","null","{bSortable: false}");
<input type="hidden" name="aoColumn" id="aoColumn" value="' . implode(",",$aoColumn) . '">
在js页面
var aos = $('#aoColumn').val();
var ao = (aos)?aos.split(","):[];
$.each(ao,function(i){
});
并在 dataTable 声明中: “aoColumns”:ao
但是它不起作用。 请让我知道这个问题。 提前致谢。
更新
我知道,在我的例子中 aoColumns
打印 ["null", "null", "null", "{bSortable: false}"]
而它应该是[null,null,null,Object{bSortable=false}]
。怎么做?
最佳答案
将 $aoColumn
传递给脚本的方式是错误的。您应该将其作为 JSON 传递——如果 JSON 在 HTML 内传输,则它也需要进行正确的 HTML 编码:
$aoColumn = array(null, null, null, array('bSortable' => false));
echo '<input ... value="' . htmlspecialchars(json_encode($aoColumn)).'">';
然后用 $.parseJSON
将其变回对象:
var aoColumn = $.parseJSON($('#aoColumn').val());
但是,我不确定您为什么要为隐藏字段烦恼。您可以直接将配置传递给 JavaScript:
<?php $aoColumn = array(null, null, null, array('bSortable' => false)); ?>
<!-- later on.... -->
<script>
var aoColumn = <?php echo json_encode($aoColumn); ?>;
</script>
关于php - ao数据表的列无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18103918/