jQuery Backstretch-将php数组传递给javascript的问题

jQuery Backstretch - Issues passing php array to javascript?

本文关键字:javascript 问题 Backstretch- php 数组 jQuery      更新时间:2023-09-26

我正在使用backstretch创建一个全屏背景幻灯片,使用wordpress页面中定义的图像。

我写了一个函数,可以将每个图像的src输出到一个数组。然而,我遇到了将这个php数组传递到javascript中的问题,或者可能是由于斜杠等原因导致字符串在javascript中解析的方式。

Backstretch需要像这样的图像阵列:

var images = [
      "http://dl.dropbox.com/u/515046/www/outside.jpg"
    , "http://dl.dropbox.com/u/515046/www/garfield-interior.jpg"
    , "http://dl.dropbox.com/u/515046/www/cheers.jpg"
  ];

目前,我正在尝试urlencode,然后是json_encode,但它似乎不起作用:

$photos = get_post_images();
$photosArray = array();
foreach ($photos as $photo) {
    $photosArray[] = $photo[0];
}
$photosArray = json_encode($photosArray);

其中$photo[0]是图像的url,如:

http://server/directory/file.jpg

然后在Javascript中:

var images = JSON.parse(<?=$photosArray?>);

正如这个stackoverflow问题所建议的那样,它给出了一个错误:

Uncaught SyntaxError: Unexpected token h

然后我试着简单地传递数组,但它总是逃脱斜杠:

http:'/'/server'/wp'/

有人能推荐一个解决方案吗?

谢谢!

// put single quotes around JSON string
var images = JSON.parse('<?=$photosArray?>');

我最终在PHP中将变量构建为字符串,然后在javascript中回显它。这不是我认为最理想的解决方案,但似乎没有其他解决方案:

$counter = 0;    
foreach ($photos as $photo) {
    $photos_js .= "'"".$photo[0]."'"";
    $counter++;
    if ($counter < count($photos)) {
    $photos_js .= ",";
    }
}

然后在Javascript中:

var images = [<?=$photos_js?>];