使用Javascript / PHP更新HTML元素

时间:2012-09-05 09:32:08

标签: php javascript ajax

我是PHP的新手,我来自C / C ++背景,我有一个问题,我已经磕了一段时间了。

我的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>

更进一步,我有这段代码,当页面上的列表框改变时,它应该更新。

<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" );                                      
});

我将'echo date(DATE_RFC822)'用于测试更新是否每次实际触发。这是我的问题,但事实并非如此。他回应了一次日期和时间,但从那时起,由于某种原因,更新不再触发。日期时间保持不变。

奇怪的是,每次我的下拉框改变值时,此行上方的Ajax.Updater方法都会更新。我真的不知道为什么......

修改

日期只是stubb数据,而不是我通常需要带有变量的php类的日期。该变量在语句上方的Ajax.Updater方法中更新。但我没有改变。这就是为什么我试图使用日期,看看语句是否确实更新。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

Ajax创建了一个新的HTTP请求,因此每次运行时都会从服务器获取新数据。

答案 2 :(得分:0)

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

这个jQuery代码意味着像这样的元素:

<ajax_placeholder_total>

</ajax_placeholder_total>

将会更新。

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

您最有可能或需要做的是在#前面使用.ajax_placeholder_total(分别为id和类)。

看看是否有帮助。

答案 3 :(得分: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" );                                      

    }
});