使用Javascript/PHP更新HTML元素

使用Javascript/PHP更新HTML元素,php,javascript,ajax,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>

我是新来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>

欧元

再进一步,我有一段代码,当页面上的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" );                                      
});

$('cb_verzendoptie')。观察('change',函数(事件)
{
var_verzendoptie=this.getValue();
新的Ajax.Updater('Ajax_placeholder_port','Ajax/berekenVerzendingskosten.php',
{参数:{verzendoptie:_verzendoptie},
});
$('ajax_占位符_总计')。更新(“+”欧元”);
});

我使用“echo date(date \-RFC822)”来测试更新是否每次都会触发。这是我的问题,不是。他只回显了一次日期和时间,但从那时起,由于某种原因,更新不再触发。日期时间保持不变

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

编辑:


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

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


Ajax会发出一个新的HTTP请求,这样它每次运行时都会从服务器获取新数据。

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

$('ajax\u placeholder\u total')。update(“+”EUR”)

jQuery的这段代码表示如下元素:

<ajax_placeholder_total>

</ajax_placeholder_total>

将要更新

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

您最可能想要或需要做的是在
ajax\u占位符\u total
前面使用
(分别用于id和类)


看看这是否有帮助。

我同意@janith使用日期对象来更新
$('ajax\u placeholder\u total')。更新功能

此外,每次更改时都会执行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" );                                      

    }
});
$('cb_verzendoptie')。观察('change',函数(事件)
{
var_verzendoptie=this.getValue();
if(//ur逻辑){
新的Ajax.Updater('Ajax_placeholder_port','Ajax/berekenVerzendingskosten.php',
{参数:{verzendoptie:_verzendoptie},
});
$('ajax_占位符_总计')。更新(“+”欧元”);
}
});

Aha,这已经有点道理了,谢谢你的解释。但是现在,如果您阅读了我对问题的编辑,您会发现我想用我真正需要的变量替换日期(stubb数据)。我从php类中获取该变量,该类在语句上方的Ajax.Updater方法中更新。但这些变化永远看不见,可能是因为你说的话。因此,无法使用简单的javascript更新方法来反映对PHP类的更改?看起来您是在prototypejs中这样做的,我不太熟悉。。但是如果你想从php中获取一个变量,你必须做的是发出一个AJAX请求,在onSuccess回调中,用你收到的数据更新这个值。谢谢你的帮助!:)