Backstretch jQuery - Проблемы передачи массива php в javascript? - PullRequest
0 голосов
/ 12 марта 2012

Я использую 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?>);

В соответствии с рекомендацией этот вопрос о переполнении стека , который выдает ошибку:

Uncaught SyntaxError: Unexpected token h

Затем я пытаюсь просто передать массив, но он всегда экранирует косую черту:

http:\/\/server\/wp\/

Кто-нибудь может порекомендовать решение?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

В итоге я создал переменную как строку в PHP, а затем повторил ее в javascript. Не то, что я бы назвал самым идеальным решением, но, как казалось, другого решения не было:

$counter = 0;    
foreach ($photos as $photo) {
    $photos_js .= "\"".$photo[0]."\"";
    $counter++;

    if ($counter < count($photos)) {
    $photos_js .= ",";
    }
}

Тогда в Javascript:

var images = [<?=$photos_js?>];
0 голосов
/ 12 марта 2012
// put single quotes around JSON string
var images = JSON.parse('<?=$photosArray?>');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...