2016-07-31 2 views
1

У меня есть PHP, который выводит некоторый код jQuery, используя <<<EOT. PHP содержит массив, который я хочу использовать внутри jQuery, но не могу заставить его работать.PHP массив в массив jQuery в пределах <<< EOT

Проблема с массивом jQuery всегда равна null. Я попробовал несколько способов сделать

PHP:

$myPHPVar = array('name' : 'data1', 'description' : 'data2'); 

function confirmation() { 

    global $myPHPVar; 

    ?> 
    <script type="text/javascript"> 
    var $myjQueryVar = <?php echo json_encode($myPHPVar); ?> 
    </script> 
    <?php 

    var $confirmation = <<<EOT 
<script> 
function postToFeed() { 
    var obj = { 
     name: $myjQueryVar['name'], 
     description: $myjQueryVar['description'] 
    }; 

    feed.post(obj); 
} 
</script> 

<div><a href="#" onClick="postToFeed()">Share your results!</a></div> 
EOT; 

    return $confirmation; 
} 

В приведенном выше коде, $myjQueryVar всегда нуль. Я вырезал нерелевантный код и предоставил большую часть вышесказанного, но я думаю, что он точно представляет логику моего кода по этой проблеме.

Из этого кода видно, что я делаю неправильно?

EDIT

В моем примере кода выше, я писал:

$myPHPVar = array('name' : 'data1', 'description' : 'data2'); 

Я не знаю, если это имеет значение, но фактический код, я использую это:

$myPHPVar = array(
    "name"   => 'Odio a', 
    "description" => 'Phasellus viverra vel odio a laoreet.' 
); 

Тем не менее, после нижеследующего предложения @Jan, представленный результат:

function postToFeed() { 
    var obj = { 
    name: , 
    description: 
}; 

ответ

1

Используйте фигурные скобки внутри Heredoc:

var obj = { 
    name: '{$myjQueryVar['name']}', 
    description: {$myjQueryVar['description']} 
}; 

Кроме того, как говорится в комментарии, вы смесительные JavaScript и PHP переменные. Это один работает (с использованием $myPHPVar вместо):

<?php 
$confirmation = <<<EOT 
<script> 
function postToFeed() { 
    var obj = { 
     name: '{$myPHPVar['name']}', 
     description: '{$myPHPVar['description']}' 
    }; 

    feed.post(obj); 
} 
</script> 

<div><a href="#" onClick="postToFeed()">Share your results!</a></div> 
EOT; 

echo $confirmation; 
?> 
+0

Визуализированное вывод показывает 'имя:' и ошибки в Firefox с 'SyntaxError: ожидается выражение, есть '' имя:' – rwkiii

+0

Что такое на самом деле ** в ** '$ myjQueryVar'? – Jan

+0

Я отредактировал мой вопрос. Думаю, это отвечает на ваш вопрос? – rwkiii

Смежные вопросы