0

私はPHPにかなり慣れておらず、JQueryにも本当に慣れていません。

だから私はいくつかの計算を行ういくつかのJQueryを書きました、私は似たようなものを以下に書きました:

//on change of a selectbox with the class item
$('.item').change(function() {
  // set variable id as the id name of this id 
  var id = this.id;
  // price variable is equal to the value of the element id 'hiddenprice'
  price = $("#hiddenprice").val();
  // number of items is the value of the select box
  numberofitems = $(this).val();
  // number of days is equal to a php variable I set on the page
  numofdays = "<?php echo $length->days; ?>";
  //totalprice is equal to the 'price' multiplied by 'numofdays'
  totalprice = Number(price) * Number(numofdays);
  //calculates final total by multiplying the 'totalprice' by 'numofitems'
  finaltotal = Number(totalprice ) * Number(numofitems); 
  //updates the HTML with the new price
  $('#'+id).html("&euro;" + finaltotal.toFixed(2));

});

私はこれを試していましたが、動作するようになりましたが、いくつか読んだ後、このスクリプトは更新されるページのフッターにあるため、ユーザーが悪意を持っている場合は安全ではなく、操作しやすいことに気付きました。

したがって、PHPスクリプトに値を投稿してから値を返すことにより、サーバー側で計算を実行したいと思います。

// POST values to PHP Script

$id = (posted select id);
$price = (#hiddenprice variable value);
$numofitems = (posted value of the select);
$numofdays = $length->days;

$totalprice = (int)$price * (int)$numofdays;
$finaltotal = (int)$totalprice * (int)numofitems;

//Then push $finaltotal and $id back to the user viewed page

$('#'+<?php echo $id; ?>).html("&euro;" + <?php echo $finaltotal; ?>.toFixed(2));

更新せずにページにプッシュしてから、更新せずに返す方法がわかりません。

繰り返しになりますが、これが単純な場合は申し訳ありませんが、JQueryフォームプラグインを見てきました。やりたいことに対してもっと適切な解決策があるかどうか疑問に思いました。

前もって感謝します。

4

2 に答える 2

1

ajaxをチェックアウトすることをお勧めします。これにより、ページを更新せずにデータを投稿または取得できます。また、この質問の答えも役立つかもしれません。

于 2013-03-14T13:36:55.153 に答える
0

AJAXを使用する必要があります。これにより、サーバーにデータが送信され、応答を受信するとコールバックを実行できるようになります。

jQueryを使用している場合は、$。ajaxメソッドについて読んでください。

応答を処理するために使用する最も簡単なデータ型はJSONです。

簡単な例

Javascript

$.ajax({
    url: calculation_url.php,
    method: 'post',
    dataType: 'JSON',
    data: {price: price, days: numofdays },
    success: function(response) {
        // you should check a valid response was received
        $("#result").html(response.html);
    }
});

PHP -calculatin_url.php

$price = $_POST['price'];
$days = $_POST['days'];
// do calculations

// send data back as json
die(json_encode(array('html' => $finalTotal)));

このプロセスを開始するには、計算ボタンにイベントを添付する必要があります。onメソッドでのイベントの登録について読んでください。event.preventDefault()メソッドについて読んでおくと役立つ場合があります。

于 2013-03-14T13:46:39.737 に答える