我正在提交带有ajax的表单,我正在尝试返回json响应。问题是我找回了缺失的观点。当我添加autoResponder = false时,我什么都没得到。我正在使用cakephp 2.5
我在同一个控制器中有另一个动作,我可以得到一个json响应。我使用标准的ajax调用。与此操作的区别在于我正在使用带有multipart的表单数据。在另一个ajax调用中,我能够将扩展名.json添加到url中,告诉cakephp使用该路由。
当我将.json添加到表单操作URL时,我得到一个回复缺失操作。
<form action="/btstadmin/pages/ajax_edit.json/3" id="ajax_editJsonForm" enctype="multipart/form-data" method="post" accept-charset="utf-8">
回复
The action <em>ajax_edit.json</em> is not defined in controller <em>PagesController
我的行动是
public function ajax_edit() {
if ($this->request->is('ajax')) {
if ($this->Page->save($this->request->data)) {
$this->RequestHandler->respondAs('json');
$this->set("status", "success");
$this->set("message", "All pages re-ordered");
$this->set("_serialize", array("status", "message"));
我的其他动作适用于:
$.ajax({
url: "/btstadmin/pages/reorder.json",
type: "post",
dataType:"json",
data: neworderSer,
我的行动给出了json回复
public function reorder() {
if ($this->Page->saveMany($data)) {
$this->set("status", "sucess");
$this->set("message", "All pages re-ordered");
$this->set("content", $data);
$this->set("_serialize", array("status", "message", "content"));
更新
我更改了表单create
$formaction = '/pages/ajax_edit/'.$this->data['Page']['id'].'.json';
echo $this->Form->create('Page', array('type' => 'file', 'url' => $formaction));
答案 0 :(得分:1)
您的表单的操作网址应为/btstadmin/pages/ajax_edit/3.json
而不是/btstadmin/pages/ajax_edit.json/3
。网址扩展名应始终位于网址的末尾。