0

我有一个包含 PHPlot 图像的 php 页面,我想添加一个按钮,将数据值打印到新窗口(或警报屏幕,由于数组大小(> 10k 值)而不可取)但我不是很确定这将如何工作。

  1. 我考虑过 window.open 但这需要一个 URL,所以我不知道它是如何工作的
  2. 我还考虑过使用 $.each 循环遍历数组并打印值,但这并没有将它放在新窗口中。

到目前为止,我有以下脚本块:

$('.XY').click(function() {
  var mz_array = <?php echo json_encode($mz_array) ?>;
  var int_array = <?php echo json_encode($int_array) ?>;
  for (var i = 0; i < mz_array.length; i++) {
    // This is obviously not what I want, it is just here to demonstrate the alert idea
    //alert(mz_array[i] - TAB - int_array[i]);
    // The below idea has my preference
    //window.open( /* printf(mz_array[i] + "\t" + int_array[i] + "\n" */ );
  }
});

我会喜欢任何关于如何以聪明的方式做到这一点的建议。

PS:1和2下的陈述是基于我有限的知识,我很可能是错的。

4

1 回答 1

1

替代解决方案(不需要数组大小相同)

$(function() {
    $('.XY').click(function() {
        var mz_array = <?php echo json_encode($mz_array) ?>;
        var int_array = <?php echo json_encode($int_array) ?>;

        var output = mz_array.map( function(val, idx) {
            return (val + "\t" + (int_array[idx] || "") );
        });

        var disp = window.open('','','width=400,height=150');
        $(disp.document.body).text( output.join("\t") );
    });
});

基本上,这会将结果合并到一个数组中,然后警告结果。然而,这种数据处理可能应该在 PHP 的后端完成,并且返回具有更有用结构的对象可能更有用,例如:

[{ mz: 'abc', int: 1 }, { mz: 'def', int: 2 }, { mz: 'ghi', int: 13 }, ...]

假设两个数组的长度相同:

$(function() {
    $('.XY').click(function() {
        var mz_array = <?php echo json_encode($mz_array) ?>;
        var int_array = <?php echo json_encode($int_array) ?>;
        var output = [];

        for (var i=0; i < (mz_array.length + int_array.length); i++ ) {
            output.push ( i%2 ? int_array[i] : mz_array[i] );
        }

        var disp = window.open('','','width=400,height=150');
        $(disp.document.body).text( output.join("\t") );
    });
});
于 2013-02-18T14:24:32.627 回答