我有以下jquery代码:
while (count < 31) {
window['cday_' + count] = <?php echo $day_1 ?>;
window['tday_' + count] = (window['cday_' + count] * formfig) / formfig2;
count++;
}
但是我需要在php echo语句中使用$ day_1来反映变量“count”,所以理论上应该是“echo $ day_count”。是否可以将var传递给php?
php&amp; jquery编码:
$i=0;
while ($i < $num) {
${"day_$i"}=mysql_result($result,$i,"datavalue");
$i++;
}
?>
<script type="text/javascript">
var chart1;
var count=1;
var formfig=17;
var formfig2=2;
function chartdraw(){
while (count < 31) {
window['cday_' + count] = <?php echo $day_1 ?>;
window['tday_' + count] = (window['cday_' + count] * formfig) / formfig2;
count++;
}
答案 0 :(得分:3)
这里简短的回答是否定的。
要了解可能的情况,您需要深入了解正在发生的事情。您的PHP代码正在构建一个HTML文档(带有嵌入式JavaScript)并将其发送到Web浏览器。一旦Web浏览器(当然,在用户的计算机上运行,而不是在您的服务器上运行)呈现该页面,它将执行javascript。这是javascript变量开始实际上意味着的东西。在那之前,它们只是通过网络发送的文本。这一点在PHP代码运行完毕后很久。您的服务器在将代码发送给用户时已经关闭了该php实例。
记住这一点,您可以使用称为ajax请求的内容将javascript变量(或任意数量的其他内容)的值发送回服务器。从本质上讲,这会将一些信息(变量的值和您想要的页面名称)发送回服务器,从而使您的服务器构建一个新的网页, PHP代码。该网页的内容将返回到您可以提供的另一个javascript - 称为“回调” - 它可以获取由第二个PHP脚本创建的页面并使用它。当然,这是相当资源密集的。
除非你打算做一些只有PHP可以做的事情,否则我建议你找一种方法在javascript中尽可能多地做你的逻辑。这可以缓解所有这些复杂的问题,并在用户的机器上保持所有的辛勤工作。
如果您可以构建代码,以便您的php代码在php完成运行之前提供javascript代码所需的所有数据,那么您可以在不使用ajax做任何事情的情况下离开。这是一个例子:
<script type="text/javascript">
var days = {};
<? for($day = 0; $day < 30; $day++) { ?>
days.<? echo $day ?> = "<? echo get_day_info($day) ?>";
<? } ?>
</script>
这样做会创建一个名为days的javascript对象。然后它将填充days.i for i从0到30.它假设你有一个名为get_day_info($ day)的函数需要一天并返回当天的信息。我在这里假设您正在处理字符串 - 如果没有,您将需要删除引号,并可能根据所需的格式执行其他操作来包装数据。
答案 1 :(得分:2)
我相信唯一的方法是使用ajax。 http://api.jquery.com/jQuery.ajax/
答案 2 :(得分:1)
并非显着改变您的方法。
问题是PHP完全存在于您的服务器上,浏览器中存在javascript。 PHP 真的知道任何关于javascript的知识。 PHP将在任何javascript运行之前完全呈现您的页面。所以没有办法轻易获得这个价值。
你可以使用ajax来运行javascript,它可以在你的服务器上加载数据或点击URL,但你不能简单地用PHP代替javascript变量。您可以使用PHP变量执行此操作的原因是因为PHP实际上正在生成javascript。
答案 3 :(得分:0)
让javascript将值存储在隐藏字段中并以这种方式使用PHP获取值吗?