【发布时间】:2014-05-30 23:41:34
【问题描述】:
我正在尝试从 CakePHP 控制器访问 AJAX 请求的数据,但是一旦进入控制器,我就无法理解表单的数据在哪里。
在我看来,在表单标签之间,我有以下代码:
echo $this->Js->submit(
'Proceed',
array(
'url' => array(
'controller' => 'json',
'action' => 'itemSelection'
),
'dataType' => 'json',
'id' => 'proceed',
'success' => 'onSuccessFunct( data )'
));
这导致以下代码:
$(document).ready(function (){
$("#proceed").bind("click", function(event){
$.ajax({
data:$("#proceed").closest("form").serialize(),
dataType: "json",
success:function (data, textStatus) {
onSuccessFunct( data )
},
type:"post",
url:"\/koro\/json\/itemSelection"
});
return false;
});
});
这部分似乎工作正常,点击完成请求,调用成功函数,问题是我不明白如何在控制器中处理表单的数据。
$this->request->data 显示为空,我不明白表单数据的去向。如果我没有对 JQuery 有很大的误解,它应该以查询字符串的方式进行解析,as shown in the .serialize() demo,但同样,我无法理解一旦序列化数据存储在控制器中的位置。
控制器的代码只是一个循环遍历表的行,将表单数据与表数据进行比较,并将其存储在另一个变量中,然后以 JSON 的形式返回。在继续执行函数代码之前调用if($this->request->is('ajax')),其中有前面提到的循环,其中曾经有一个 if 测试表单数据以检查它的值是否不同于 null 和 0。我不相信控制器代码确实是个问题。
总结一下:
- CakePHP 是否有一个默认变量存储来自 AJAX 请求的序列化表单的数据?
- 如果不是,这些数据在常规 AJAX 请求中存储在哪里 ||如何将其重定向到我选择的变量? (抱歉这个 AJAX 新手跟进)
不用说,欢迎任何评论/回答,在此先感谢
PD:代码在 AJAX 之前的状态下经过测试并且运行良好(我通过发布请求处理所有内容)。为了保证秩序和可用性,我昨天才开始将它迁移到 AJAX。
【问题讨论】:
标签: jquery ajax cakephp cakephp-2.4.7