【问题标题】:cakephp saving data without reload pagecakephp无需重新加载页面即可保存数据
【发布时间】:2013-09-11 07:34:29
【问题描述】:

我有一个名为 price 的标签,该标签每两秒从服务器自动更新其值。我还有一个按钮或链接,当我点击时它会增加数据库中的这个价格。问题是如何保存数据而不重定向到同一页面。

我的代码:

<?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 问题。在这两种情况下,我都感谢您的帮助

【问题讨论】:

    标签: php jquery cakephp


    【解决方案1】:

    如果您不想重新加载页面来执行此操作,则需要使用 Ajax..因为您已经为此获得了唯一 id,您需要做的是使用 Jquery Ajax 来处理此问题。

    首先下载 jquery lib 并将其放入您的app/webroot/js 文件夹并加载它

    http://jquery.com/download/在这里下载Jquery库

    那么你可以这样做:

    <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

    由于我们在 ajax 调用中将 increse_price 作为参数传递并且方法是 post,因此在您的函数中,您必须使用 $_POST['increase_price'] 来捕获它然后分配给另一个变量

    例如:$param1 = $_POST['increase_price'];那你就可以用了..

    应该为你解决问题

    【讨论】:

      【解决方案2】:

      正常的流程是当你点击一个链接时,浏览器从服务器请求一个新的页面,然后渲染内容。

      如果您想从客户端更改 DOM 中的某些内容,则需要 Javascript。

      使用 Javascript,您可以跳过完整的页面重新加载,因为您可以请求所需的确切信息,然后用它更新 DOM。这被称为AJAX

      虽然您可以使用纯 Javascript 进行 AJAX,但使用 jQuery 之类的 Javascript 框架通常更容易使事情变得更容易。

      【讨论】:

        猜你喜欢
        • 2020-02-16
        • 2014-07-14
        • 2012-08-16
        • 1970-01-01
        • 2017-05-03
        • 1970-01-01
        • 1970-01-01
        • 2013-05-28
        • 1970-01-01
        相关资源
        最近更新 更多