我有以下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>
注意将双引号改为单引号