我是PHP数组的新手,我已经阅读了不同的方法。我有一个工作的jQuery页面依赖于按下按钮。我想继续使用这些按钮。我想出了这段代码:
echo "
<script type='text/javascript'>
$('.healthy_button').off('click').on('click', function(){
" . $restChoice = array_rand($healthyRestaurants) . "
console.log(\"restChoice =" . $healthyRestaurants[$restChoice] . "\");
$('#result').html(\"Today, I suggest you eat at ---.\");
});
</script>
";
我不断收到$ restChoice未定义的错误,因为此行中的索引:
console.log(\"restChoice =" . $healthyRestaurants[$restChoice] . "\");
正如您所看到的,我试图定义它。我错过了一些明显的东西吗?
答案 0 :(得分:1)
假设已定义$healthyRestaurants
,请在echo
之外定义:
$restChoice = array_rand($healthyRestaurants);
echo "
<script type='text/javascript'>
$('.healthy_button').off('click').on('click', function(){
console.log(\"restChoice =" . $healthyRestaurants[$restChoice] . "\");
$('#result').html(\"Today, I suggest you eat at ---.\");
});
</script>
";
答案 1 :(得分:1)
要在每次单击按钮时获取其他餐厅,请将PHP餐馆数组写入Javascript数组。然后在单击按钮时使用Javascript随机拉出餐馆。
<?php
$healthyRestaurants = array(
"One",
"Two",
"Three",
"Four",
"Five"
);
?>
<button class="healthy_button">Restaurant</button>
<div id="result"></div>
<script>
var hR = <?php echo json_encode($healthyRestaurants); ?>;
$('.healthy_button').on('click', function(){
var rand_rest = hR[Math.floor(Math.random()*hR.length)];
$('#result').html("Today, I suggest you eat at " + rand_rest);
});
</script>
PHP代码无法执行Javascript代码,Javascript无法执行PHP代码。您可以共享信息,但如果他们有Facebook帐户,他们的关系状态将是“它很复杂”。
您可以将PHP“向下”硬编码到Javascript。 Javascript无法逆转这一点。要将值返回到PHP,您必须重新加载页面或使用XHR对象(AKA AJAX)。
为了最大限度地减少流量并为用户提供即时反馈,请使用PHP检索餐馆数组并将其写入Javascript变量。然后使用Javascript随机抽取餐馆并将其写入屏幕。
现在,如果您的餐馆列表数十万,并且下载到浏览器的费用太大,那么XHR对象会更有意义。
答案 2 :(得分:0)
使用heredoc减少了在文本中转义的需要,使其更具可读性......
我认为你的问题是你得到了JavaScript(+)和PHP(。)字符串连接混淆。
$restChoice = array_rand($healthyRestaurants);
echo <<<EOF
<script type='text/javascript'>
$('.healthy_button').off('click').on('click', function(){
{$restChoice}
console.log("restChoice = {$healthyRestaurants[$restChoice]}");
$('#result').html("Today, I suggest you eat at ---.");
});
</script>
EOF;