首先:我知道这是重复的。我正在创造这个,因为所有其他问题的答案都不能满足我。我有一个非常特殊的情况,我使用yii和tryi我无法通过ajax发送它,因为php和javascript在同一页面的同一页面上。
基本上我要问的是,如果你有一个使用yii和图表js的页面,你需要渲染一个页面,该页面需要来自点击栏的两个参数,由activeBars[0]
表示:
<script>
canvas.onclick = function(event) {
var activeBars = getBarsAtEvent(event);
<?php $controller->functionThatRendersView($arg1 /**(activeBars[0].value*/,$arg2 /**(activeBars[0].label*/); ?>
}
我不在乎它是否会自动渲染,这是另一个问题。我只需要将这些参数传递给php。
感谢。
另外,如果它有帮助,我通过php for循环将这两个值传递给javascript:
labels: [<?php for ($i=1;$i<=$numberIssues;$i++) {
echo $i . ",";
}?>],
抓取$i
并将其放入标签参数的问题是,我不知道哪个条形标签是被点击的标签,我需要javascript将点击的条形值传递给php。< / p>
答案 0 :(得分:2)
再次向我们解释为什么你不能使用ajax。你说“因为php和javascript在同一页面上”。这不是ajax的原因 - 你需要一个不同的URL用于ajax请求,以及一个单独的PHP文件或其他东西来处理它。
如果没有ajax,javascript就无法向PHP发送信息,因为PHP在客户端上运行javascript之前在服务器上运行。当然,除非您想要进行完整的页面刷新,否则从用户的角度来看,这会更慢并且通常更糟糕。
答案 1 :(得分:1)
我找到了问题的答案!我正在为其他绊脚石的人做这件事:
要将javasctipt变量var jsInteger = 5;
传递给php,请键入(在javascript中):
window.location.href = "yourPhpFile.php?phpInteger="+jsInteger;
你可以在php中访问变量:
$phpInteger = $_GET['phpInteger'];
这将需要页面刷新,并将您重定向到php文件。