PHP数组到javascript返回一个字符


PHP array to javascript returning one character

我有以下PHP数组:

 $array = array("picture1"=>"item1", "picture2"=>"item2",
     "picture3"=>"item3", "picture4"=>"item4");

我试图通过使用jquery的。attr()方法通过这个html代码获得数组值。

<td data-pictures="<?php echo json_encode($array); ?>"></td>
pictures = $(this).attr('data-pictures');

当我为pictures变量执行控制台日志时,我只得到一个"{",没有别的了。有人能帮忙吗?

改变这一行

<td data-pictures="<?php echo json_encode($array); ?>"></td>

<td data-pictures="<?php echo htmlentities(json_encode($array)); ?>"></td>

正如@Arun所说,必须先转义引号,否则属性将被终止。在这种情况下可以使用htmlspecialchars()。考虑这个例子:

<?php $array = array("picture1"=>"item1", "picture2"=>"item2", "picture3"=>"item3", "picture4"=>"item4"); ?>
<table>
    <tr>
        <td data-pictures="<?php echo htmlspecialchars(json_encode($array)); ?>"></td>
    </tr>
</table>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    var pictures = $.parseJSON($('td').attr('data-pictures'));
    console.log(pictures);
});
</script>

这是由于使用引号的错误。你可以使用:

<td data-pictures='<?php echo json_encode($array); ?>'></td>

注意将双引号改为单引号