0

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

「エコー日付(DATE_RFC822)」を入れて、更新が実際に毎回トリガーされるかどうかをテストしました。そして、それは私の問題です、そうではありません。彼は一度日付と時刻をエコーし​​ますが、それ以降、何らかの理由で更新がトリガーされなくなります。日時はそのままです。

奇妙なことに、この行の上の Ajax.Updater メソッドは、ドロップダウン ボックスの値が変更されるたびに更新されます。なぜだか本当にわからない…

編集:

日付は、変数を持つphpクラスが通常必要な日付ではなく、単なるスタブデータです。変数は、ステートメントの上の Ajax.Updater メソッドで更新されます。でも私は変わらない。そのため、ステートメントが更新されるかどうかを確認するために、日付を使用しようとしました。

4

4 に答える 4

1

JavaScript はクライアント側で動作し、PHP はサーバー側で動作します。JavaScript が実行されるたびに、echo ステートメントは実行されません。サーバー側で 1 回実行され、ブラウザに送信されます。現在の日付を取得したい場合は、JavaScript のDate オブジェクトを使用できます。

于 2012-09-05T09:38:59.347 に答える
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" );                                      

    }
});
于 2012-09-05T10:22:05.100 に答える
0

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

jQuery へのこのコードは、次のような要素を意味します。

<ajax_placeholder_total>

</ajax_placeholder_total>

更新予定です。

実際、セレクターは一意ではないため、更新されることさえありません。

最も可能性が高い、または行う必要があるのは、#または.の前に (id とクラスにそれぞれ) を使用することですajax_placeholder_total

それが役立つかどうかを確認してください。

于 2012-09-05T09:43:51.867 に答える
0

JavaScript が PHP から出力されてブラウザーに送信された日付 (JS 関数が呼び出されたときではない) をエコーするため、ページが生成された時刻が常に表示されます。

Ajax は新しい HTTP リクエストを作成するため、実行するたびにサーバーから新しいデータを取得します。

于 2012-09-05T09:34:53.393 に答える