【问题标题】:Equivalent of $_POST in CakePHP for ajax calls?CakePHP 中的 $_POST 等价于 ajax 调用?
【发布时间】:2011-11-26 03:07:48
【问题描述】:

通常,当我使用 jQuery 的 $.post() 对页面进行 ajax 调用时,我会使用以下内容发布到特定页面(即 ajax.php):

var submissionId = 1;
$.post('/ajax/ajax.php', {
        submissionId: submissionId
}, function(data) {
alert(data);
});

在 ajax/ajax.php 中,我将使用 $_POST['submissionId'] 来处理我想要的数据。如果我要发布到控制器,CakePHP 中的等价物是什么?

我仍然使用$_POST['submissionId']$this->data吗?

如果使用$this->data,是否需要创建<form> 来包装事件处理程序?

【问题讨论】:

  • 我认为this answer 可能会回答您的问题。将validatePost 设置为false 将使$_POST 在您的CakePHP 应用程序中正常运行。
  • 我想弄清楚他在哪里定义了该变量并将其设置为 false?在他发布到的控制器内?
  • 它将在该控制器的 beforeFilter 回调中设置:function beforeFilter() { $this->Security->validatePost = false; }。您可能会发现 this post 很有帮助(假设您使用的是 1.3)。

标签: php jquery ajax cakephp post


【解决方案1】:

您应该使用 cake helper 创建表单(如果您不希望它出现,请使用 css 或 jquery 隐藏它)并使用 jquery form plugin
您可以使用 jquery 和 submit()
提交表单 所以在控制器中你可以使用 $this->data

【讨论】:

  • 我对 CakePHP 了解不多,所以如果这是唯一的方法,我不怪你,但是创建一个表单并用样式隐藏它听起来像一个非常笨拙的解决方案。样式不应该那样使用。没有更好的办法吗?
  • 我也想知道上面@Reesis 问题的答案。这是传递数据并将其与 $this->data 一起使用的唯一方法? CakePHP 在我看来总是更丑。
  • 还有另一种方法(在控制器中使用 $this->data 而不使用表单技巧)。您可以使用 firebug 检查帮助程序生成的表单输入名称或检查发布请求并查看数据。它们看起来像 data[something][0][something] 或 data[something][something]。您可以使用 json 来发布这些数据。
  • @hope_is_grim 这行不通,因为我只想在不使用 Cake 的内置 formhelper 的情况下发送任意数据。
  • 我的意思是 {data: {submissionId: submitId}}
猜你喜欢
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多