2012-09-05 40 views
0

我是PHP的新手,我来自C/C++的背景,我有一个问题,我一直在磕磕绊绊。使用Javascript/PHP更新HTML元素

我有这样一段代码在我的html文件:

<div class="totaal clearfix"> 
<div class="border-left"></div> 
<div class="content-totaal"> 
    <h2 class="vk"><?php echo $locLocal["lbl_totaal"]; ?></h2> 
    <div class="totalekost" id="ajax_placeholder_total"> 
     <span id="prijs_totaal"> 
      <?php 
       $winkelwagentje->berekenTotaal(); 
      ?> 
     </span> EUR 
    </div> 
</div> 
<div class="border-right"></div> 

远一点,我有这样的一段代码应该更新时,页面上的变化listdownbox。

<script type="text/javascript">  
$('cb_verzendoptie').observe('change', function(event) 
{ 
    var _verzendoptie = this.getValue(); 

    new Ajax.Updater('ajax_placeholder_port', 'ajax/berekenVerzendingskosten.php', 
            { parameters: { verzendoptie: _verzendoptie}, 
            }); 

    $('ajax_placeholder_total').update("<?php echo date(DATE_RFC822); ?>" + " EUR");          
}); 

我把 '回声日期(DATE_RFC822)' 以测试是否更新实际上触发每次。这是我的问题,它不是。他一次回应日期和时间,但从那时起,由于某种原因,更新不再触发。日期时间保持不变。

奇怪的是,这行上面的Ajax.Updater方法在每次我的Dropdownbox更改值时都会更新。我真的不知道为什么...

编辑:

日期只是斯图布数据,而不是数据,我通常需要一个PHP类有一个变量。该变量在语句上方的Ajax.Updater方法中更新。但我没有改变。这就是为什么我试图使用日期,以查看语句是否更新。

回答

0

您回显从PHP输出JavaScript并发送到浏览器(不是在调用JS函数时)的日期,因此它将始终显示生成页面的时间。

Ajax提供了一个新的HTTP请求,所以它每次运行时都会从服务器获取新数据。

1

JavaScript在客户端工作,PHP在服务器端工作,每次运行javascript时,echo语句都不会执行,它在服务器端执行一次,并发送到浏览器。 如果你想获取当前日期,你可以使用JavaScript的Date object

+0

啊哈,已经成为位的感觉,谢谢你的解释。 但是现在,如果您阅读我的问题编辑,您会发现我想用我真正需要的变量替换日期(stubb数据)。 我从php类中获取该变量,该类在语句上方的Ajax.Updater方法中更新。但这些变化永远不可见,可能是因为你说的话。所以不能使用简单的JavaScript更新方法来反映对PHP类的更改? – ThijsM

+0

看起来你是在prototypejs中做的,我不是很熟悉..但是如果你想从php获得一个变量,你必须做的是做一个AJAX请求,并在onSuccess回调中更新值收到您收到的数据。 – janith

+0

Owkay,我会尝试使用AJAX请求和onSuccess回调来完成它。感谢您的帮助! :) – ThijsM

0

$('ajax_placeholder_total').update("<?php echo date(DATE_RFC822); ?>" + " EUR");

该代码将jQuery意味着这样的一种元素:

<ajax_placeholder_total> 

</ajax_placeholder_total> 

将要被更新。

实际上,它甚至不会更新,因为您的选择器不是唯一的。

你最希望或需要做的是在ajax_placeholder_total前面使用#.(分别用于id和class)。

看看是否有帮助。

0

我@janith使用日期对象同意更新$('ajax_placeholder_total').update功能

而且你每次改变,因此它每次发生的时间时执行的Ajax.Updater功能。

你可以把一些条件来检查值的变化,然后只执行的Ajax.Updater

$('cb_verzendoptie').observe('change', function(event) 
{ 
    var _verzendoptie = this.getValue(); 
    if(// ur logic){ 
     new Ajax.Updater('ajax_placeholder_port', 'ajax/berekenVerzendingskosten.php', 
            { parameters: { verzendoptie: _verzendoptie}, 
            }); 

      $('ajax_placeholder_total').update("<?php echo date(DATE_RFC822); ?>" + " EUR");          

    } 
});