我有一些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:
};
答案 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;
?>