如何正确传递JSON数组?

时间:2009-11-06 00:45:17

标签: jquery arrays json

我正在尝试使用以下内容创建淡入淡出效果...除了json数组的传递之外,我已被告知即将到来。目前没有显示图像。

 //generate all the boxes
$.get('images.php',function(data){
  for (var i=0; i < totalBoxes; i++){
      var randomImage = data[Math.floor(Math.random() * data.length)];
      $('<div class="pf-box"><img class="black" src="' + randomImage['black'] + '" /><img class="colour" src="' + randomImage['colour'] + '" /></div>').hide().appendTo('#bg').fadeIn('slow').filter('.colour').css("opacity", 0);
  }
 },'json');

 //add the hover behavior to all the elements
 $('.colour').hover(function() {
   $(this).stop().fadeTo(700, 1);
 },function() {
   $(this).stop().fadeTo(700, 0);
 });

和images.php

    <?php 
   header('Content-type: application/json');
echo '[  
    {'black' : 'images/random/1.jpg', 'colour' : 'images/random/1-c.jpg'},  
    {'black' : 'images/random/2.jpg', 'colour' : 'images/random/2-c.jpg'}
]';
    ?>

3 个答案:

答案 0 :(得分:2)

你不需要转义JSON字符串中的引号吗?否则,php解释器将无法发送您想要的所有内容,甚至可能会出现一些错误。

答案 1 :(得分:0)

使用randomImage.black而不是randomImage ['black']

答案 2 :(得分:0)

你的回声失败了,因为JSON输出中的单引号突破了回声。

用不同的引号括起你的字符串,这样你就可以正确回显:

<?php
header('Content-type: application/json'); 
echo "[
    {'black' : 'images/random/1.jpg', 'colour' : 'images/random/1-c.jpg'},
    {'black' : 'images/random/2.jpg', 'colour' : 'images/random/2-c.jpg'} 
]"; 
?>

请注意使用双引号括起echo字符串,而不是您使用的单引号。 (如果你在字符串中有双引号,那么你就可以反转它并在外面使用单引号。)