0

price というラベルがあり、このラベルはサーバーから 2 秒ごとに値を自動的に更新します。また、クリックするとデータベースでこの価格が上がるボタンまたはリンクがあります。問題は、同じページにリダイレクトせずにデータを保存する方法です。

私のコード:

<?php 
echo $this->html->link('Increase price', array('controller' => 'example', 'action' => 'increase_price', $param1), array ('id' => 'btPrice'));
?>

そして ExampleController のコードは

    function increase_price($param1) 
    {
        $this->autoRender = false; //Don't want a view

        $example = $this->Example->findById($param1);
        $example ['Example ']['price'] = $example ['Example ']['price'] + 1;
        $this->Example->save($example );


    }

価格は上がっていますが、cakePhp は私にビューを要求しています。autoRender=false を実行すると、ページが空白になり、同じページにとどまりたいです。これが CakePhp の質問なのか、Jquery の質問なのかわかりません。どちらの場合も、あなたの助けに感謝します

4

2 に答える 2

1

これを行うためにページをリロードしたくない場合は、Ajax を使用する必要があります。これには既に一意の ID があるため、Jquery Ajax を使用してこれを処理する必要があります。

最初にjquery libをダウンロードし、フォルダーに入れてapp/webroot/jsロードします

http://jquery.com/download/ここから Jquery lib をダウンロード

次に、次のことができます。

<script>
$( document ).ready(function() {
//do sth when click on #btPrice
   $('#btPrice').click(function(){  
        $.ajax({        
            type:"POST",
            //the function u wanna call
            url:"<?php echo $this->webroot;?>example/increase_price/",
            /* data you wanna pass, as your $param1 is serverSide variable, 
               you need to first assign to js variable then you can pass: 
               var param1 =      '<?php echo $param1;?>';*/                  
            data:{increase_price:param1},               
            success:function(data)
            {
                //update your div
            }
        });
   });
});
</script>

また、変更する必要がありますincrease_price function

increse_price を ajax 呼び出しのパラメーターとして渡し、メソッドが post であるため、関数で$_POST['increase_price']それをキャッチしてから別の変数に割り当てる必要があります

例: $param1 = $_POST['increase_price']; その後、あなたはそれを使用することができます..

あなたのためにトリックをするべきです

于 2013-09-10T23:20:36.670 に答える
1

通常の流れでは、リンクをクリックすると、ブラウザがサーバーに新しいページを要求し、コンテンツをレンダリングします。

クライアント側から DOM の何かを変更したい場合は、Javascript が必要です。

Javascript を使用すると、必要な正確な情報を要求して、それで DOM を更新できるため、完全なページのリロードをスキップできます。これはAJAXとして知られています。

プレーンな Javascript で AJAX を実行できますが、通常は、jQuery などの Javascript フレームワークを使用して作業を簡単にする方がはるかに簡単です。

于 2013-09-10T23:22:00.417 に答える