我正在尝试从 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的理解不是很大的话,应该是用querystring的方式来解析的,如.serialize()
demo所示中所示,但同样,我无法理解一旦序列化数据存储在控制器中的位置。
控制器的代码只是一个遍历表行的循环,将表单数据与表数据进行比较,并将其存储在另一个变量中,然后以 JSON 形式返回。在继续执行函数代码之前调用了一个if($this->request->is('ajax'))
,其中有前面提到的循环,其中曾经有一个 if 测试表单数据以检查它的值是否不同于 null 和 0。我不相信控制器代码是真的是个问题。
总结一下:
- CakePHP 是否有一个默认变量存储来自 AJAX 请求的序列化表单的数据?
- 如果不是,这些数据在常规 AJAX 请求中存储在哪里 || 如何将其重定向到我选择的变量?(对不起这个 AJAX 菜鸟后续)
不用说,欢迎任何评论/回答,在此先感谢
PD:代码在 AJAX 之前的状态下经过测试并且运行良好(我通过发布请求处理所有内容)。为了支持秩序和可用性,我昨天才开始将它迁移到 AJAX。