database - CakePHP 和 AJAX 无需刷新页面即可更新数据库

标签 database ajax cakephp

我正在使用 CakePHP 1.3.7,我正在尝试执行以下操作:

在给定页面上,用户可以单击传递保存到数据库中的参数的链接(或图像或按钮,无关紧要)。但是,所有这一切,无需刷新页面

我一直在做一些研究,我相信我也需要使用 AJAX 来完成这个任务。但是,我找不到关于如何做到这一点的很好的示例/解释。

我认为这个想法是使用 AJAX 创建链接,它调用将接收变量作为参数的 Controller /操作,并执行操作以将其保存在数据库的相应字段/表中。

有人有我想做的事情的小例子吗?或者也许给我指出一些解释它的教程...提前非常感谢!

编辑

好的,谢谢各位的回复。他们并没有直接工作,但我想我已经越来越接近我想要的了。这就是我现在正在做的事情:

我认为有以下代码:

<div id="prev"><a>click me</a></div>

<div id="message_board"> </div>

我称这个JS文件为:

$(document).ready(function () {

$("#prev").click(function(event) {      
    $.ajax({data:{name:"John",id:"100"}, dataType:"html", success:function (data, textStatus) {$("#message_board").html(data);}, type:"post", url:"\/galleries\/add"});
    return false;
});
});

我的图库 Controller 中的添加操作如下所示:

function add() {

    $this->autoRender = false;  

    if($this->RequestHandler->isAjax()) {

    echo "<h2>Hello</h2>";
    print_r($this->data);
        $this->layout = 'ajax';

        if(!empty($this->data)) {

    $fields = array('phone' => 8, 'modified' => false);
        $this->User->id = 6;
            $this->User->save($fields, false, array('phone'));

        }
}
}

当点击“#prev”元素时,我收到了 add 操作的响应,我知道这是因为文本“Hello”打印在 #message_board 内。它无需刷新页面即可完成此操作,这就是我需要的原因。我的问题是我无法使 $.ajax() 函数发送任何数据,当它到达 Controller 时 $this->data 为空,所以它永远不会进入将信息保存到数据库的 if 内部(现在它保存只是一件简单的事情,但我希望它保存来自 View 的数据)。

有人能看出我做错了什么吗?如何将数据发送到 Controller ?

最佳答案

CakePHP 并不重要,您需要的大部分代码都在客户端。自己实现 AJAX 是一件很痛苦的事,所以你真的想使用一个库;目前最流行的可能是 jQuery。他们的 AJAX 页面上有很多示例:http://api.jquery.com/jQuery.ajax/

所以,假设文档中有类似的内容:

<form id="s">
  <input id="q"/>
  <input type="submit" href="Search!"/>
</form>
<div id="r"/>

你可以将其放入 JavaScript 中:

$('#s').submit(function(evt) {
  evt.preventDefault();
  $.ajax({
    url: 'foo.php',
    data: {
        query: $('#q').val()
      },
    success: function(data) {
        $('#r').html(data);
      }
  });
  return false;
});

那么您的 foo.php 只需要返回将进入 div#r 的 HTML 片段。

编辑:我忘记停止提交:( 感谢@Leo 的更正。

编辑:我明白你的困惑是什么。您将不会获得数据。我没有使用过 CakePHP,但我假设 $this->data 是您从 $_REQUEST['data'] 获得的内容?你在服务器上看不到它。 data 是所提交内容的哈希值;您将直接获得 $_REQUEST['name']$_REQUEST['id'] (我认为,将其翻译为 CakePHP 为 $this->name$this->id)。

关于database - CakePHP 和 AJAX 无需刷新页面即可更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5401218/

相关文章:

javascript - 未找到 ID 当在外部选择数据库中使用 ajax 进行使用功能单击 js 时

javascript - 如何在 Flask 中使用 JSON 对象

javascript - JQuery 日期选择器不保存所选日期

php - 创建新工作表 PHPExcel

php - CakePHP - 我如何定义到没有任何关联 Controller 的非 cakephp 文件的路由?

php - 在 PHP 中发布 MySQL 加密

php - 关于交易行为的两个快速问题

mysql - 慢速SQL查询的特征

database - 使用 psql 安装并连接到数据库

javascript - 跨浏览器 AJAX 功能动态加载 HTML