Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakephp在不重新加载页面的情况下保存数据_Php_Jquery_Cakephp - Fatal编程技术网

cakephp在不重新加载页面的情况下保存数据

cakephp在不重新加载页面的情况下保存数据,php,jquery,cakephp,Php,Jquery,Cakephp,我有一个名为price的标签,这个标签每两秒钟从服务器自动更新一次它的值。我还有一个按钮或链接,当我点击时,它会增加数据库中的价格。问题是如何保存数据而不重定向到同一页 我的代码: <?php echo $this->html->link('Increase price', array('controller' => 'example', 'action' => 'increase_price', $param1), array ('id' => 'btPr

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

我的代码:

<?php 
echo $this->html->link('Increase price', array('controller' => 'example', 'action' => 'increase_price', $param1), array ('id' => 'btPrice'));
?>
价格提高了,但cakePhp要求我查看,如果我设置autoRender=false,那么我的页面将是空白的,我希望保持在同一页面上。
我不知道这是一个CakePhp问题还是一个Jquery问题。在这两种情况下,我都非常感谢您的帮助

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

首先下载jquery库,将其放入
app/webroot/js
文件夹并加载

在这里下载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>

$(文档).ready(函数(){
//点击价格时做某事
$('#btPrice')。单击(函数(){
$.ajax({
类型:“POST”,
//你想调用的函数
url:“示例/涨价/”,
/*要传递的数据,因为$param1是服务器端变量,
您需要首先分配给js变量,然后才能传递:
变量param1='';*/
数据:{涨价:param1},
成功:功能(数据)
{
//更新你的div
}
});
});
});
此外,您还必须修改
涨价函数

当我们在ajax调用中将incremese\u price作为参数传递,并且方法是post时,在您的函数中,您必须使用
$\u post['incremese\u price']
捕获它,然后分配给另一个变量

例如:
$param1=$\u POST[“涨价”]
;那你就可以用了


应该为您提供技巧

正常的流程是,当您单击链接时,浏览器从服务器请求一个新页面,然后呈现内容

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

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

虽然可以使用普通Javascript实现AJAX,但使用诸如jQuery之类的Javascript框架来简化工作通常要容易得多

<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>