PHP数组到jQuery数组&lt;&lt; <eot

时间:2016-07-31 13:30:11

标签: php jquery

=“”

我有一些PHP使用<<<EOT输出一些jQuery代码。 PHP包含一个我想在jQuery中使用的数组,但无法使它工作。

问题在于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始终为null。我已经删除了不相关的代码并自由交配了上述大部分内容,但我认为它准确地代表了我的代码在这个问题上的逻辑。

从上面的代码可以看出我做错了吗?

修改

在上面的代码示例中,我写道:

$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 个答案:

答案 0 :(得分: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;
?>