2016-07-31 79 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始終爲空。我已經刪除了不相關的代碼,並且自由地處理了上述大部分代碼,但我認爲它準確地表示了我的代碼在這個問題上的邏輯。

從上面的代碼顯而易見我做錯了什麼?

編輯

在上面我的代碼示例中,我寫道:

$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

使用定界符內大括號:

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

渲染輸出顯示'名稱:'與'的SyntaxError在Firefox中的錯誤:預期的表現,得到了 '' 名,' – rwkiii

+0

什麼實際上是在** **'$ myjQueryVar'? – Jan

+0

我編輯了我的問題。我認爲它回答你的問題? – rwkiii