Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP字符串到JS选项_Javascript - Fatal编程技术网

Javascript PHP字符串到JS选项

Javascript PHP字符串到JS选项,javascript,Javascript,我试图将一个PHP字符串传递给javascript,然后将其用作一个选项。我正在使用http://masonjs.com/docs来执行此操作。当我使用数据变量时,它不起作用 <script type="text/javascript"> var mason; var size; var data = "<?php echo $this->getSizes($blocks); ?>"; console.log(data); /

我试图将一个PHP字符串传递给javascript,然后将其用作一个选项。我正在使用
http://masonjs.com/
docs来执行此操作。当我使用
数据
变量时,它不起作用

<script type="text/javascript">
    var mason;
    var size;
    var data = "<?php echo $this->getSizes($blocks); ?>";
    console.log(data);
    //This contains: [3,2],[2,2]

    jQuery(function(){
        mason = jQuery("#grid").mason({
            itemSelector: ".masonblock",
            ratio: 1.5,
            sizes:[
                data
            ],
            columns: [
                [0, 480, 6]
            ],
            filler: {
                itemSelector: '.filler',
                filler_class: 'mason-filler'
            },
            gutter: 5,
            layout: "fluid"
        })
    });
</script>
它似乎与作为选项传递的字符串类型有关。我应该将值作为对象发送吗?你能告诉我我做错了什么吗

我甚至尝试了
JSON.stringify(数据)但没有乐趣。

var data=JSON.parse();
var data = JSON.parse(<?php echo json_encode($this->getSizes($blocks)); ?>);
我们应该做到这一点。虽然考虑是从PHP

< P >生成JS的不良实践尝试:

var data = JSON.parse("[" + <?php echo json_encode($this->getSizes($blocks)); ?> + "]");
var data=JSON.parse(“[”+“]);
“[3,2],[2,2]”不是有效的JSON字符串。您需要将其封装在一个数组中,以便
JSON.parse()
正常工作


注意:
数据
将具有值
[[3,2],[2,2]]
,因此您可能希望将
大小:[data]
更改为仅
大小:数据

您正在使用的插件期望
大小
为一个数组。当你写作时:

var data = "<?php echo $this->getSizes($blocks); ?>";
但是


尝试
data=[]
并将size选项设置为
size:data
您能告诉我,如果我将其作为php数组发送,如何将其转换为size选项吗?@MagentoMan当将数据从php传递到前端时,您正在处理字符串,您不能传递php对象。但是,您可以传递JSON编码的PHP对象,然后将它们解码为JavaScript对象。因此,在一行中
size:JSON.parse()。谢谢!你帮了大忙!
var data = "<?php echo $this->getSizes($blocks); ?>";
var data = "[3,2],[2,2]"; // Will be a string not an array
var data = [<?php echo $this->getSizes($blocks); ?>]; // I removed quotes plus added brackets to make it an array
jQuery(function(){
    mason = jQuery("#grid").mason({
        itemSelector: ".masonblock",
        ratio: 1.5,
        sizes: data,
        ......
    });
});