cakephp在不重新加载页面的情况下保存数据
我有一个名为price的标签,这个标签每两秒钟从服务器自动更新一次它的值。我还有一个按钮或链接,当我点击时,它会增加数据库中的价格。问题是如何保存数据而不重定向到同一页 我的代码: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
<?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>