Cakephp ajax表单赢得';不要加载正确的视图

Cakephp ajax表单赢得';不要加载正确的视图,cakephp,ajaxform,cakephp-2.4.7,Cakephp,Ajaxform,Cakephp 2.4.7,我只是尝试从表单提交调用一个函数(也是从ajax调用) 我想调用add方法,但总是调用索引 我的ajax视图和ajax提交表单: <?php $count = count($files); ?> <div id="message"></div> <i><?= __('Nombre de fichiers liés : ') . $count ?></i> <?= $this->Form->create('F

我只是尝试从表单提交调用一个函数(也是从ajax调用)

我想调用add方法,但总是调用索引

我的ajax视图和ajax提交表单:

<?php $count = count($files); ?>
<div id="message"></div>
<i><?= __('Nombre de fichiers liés : ') . $count ?></i>
<?= $this->Form->create('FilesManager', array('enctype' => 'multipart/form-data', 'url' => array('action' => 'add'))); ?>
<?= $this->Form->input('file', array('type' => 'file', 'label' => false, 'class' => 'form-control')); ?>
<?= $this->Js->submit('Envoyer', array('update' => '#message', 'div' => false, 'type' => 'json', 'async' => false)); ?>
<?= $this->Js->writeBuffer(); ?>
不适用于我,但生成的表单如下所示:

<form action="/agralis/files_managers/add" enctype="multipart/form-data" id="FilesManagerIndexForm" method="post" accept-charset="utf-8">...<input id="submit-838644811" type="submit" value="Envoyer"><script type="text/javascript">
//<![CDATA[
$("#submit-838644811").bind("click", function (event) {$.ajax({async:false, data:$("#submit-838644811").closest("form").serialize(), dataType:"html", success:function (data, textStatus) {$("#message").html(data);}, type:"post", url:"\/agralis\/FilesManagers"});
return false;});
//]]>
</script></form>
。。。
//
我可以看到表单动作看起来不错(当我在浏览器url中复制/粘贴动作时,他找到了方法),但是从ajax提交按钮调用的url是错误的!我怎样才能改变这一点?

助手们正在独立工作
Js
helper不知道
Form
helper,它们彼此不交互,因此
Js
helper不知道表单URL

该问题的解决方案相当简单,只需查看文档:

submit()
方法接受一个
url
选项,您可以在其中指定一个url,以防基于当前请求的默认url不适合您

$this->Js->submit('Envoyer', array(
    'url' => array('action' => 'add')
    // ...
));
不支持文件上载 您将遇到的下一个问题是文件上载不起作用。这不是问题的一部分,但我会提出这个问题

Js
帮助程序不支持生成处理文件上传所需的JavaScript,它需要使用
XMLHttpRequest
2级(
xhr2
)功能


您必须编写自定义JavaScript来处理这个问题。有关这方面的说明和教程可以在web上找到。

如果添加操作与调用它的视图位于同一控制器中,请尝试
$this->Form->create('filemanager',array('action'=>'add'))
问题更新,感谢您的帮助。
<form action="/agralis/files_managers/add" enctype="multipart/form-data" id="FilesManagerIndexForm" method="post" accept-charset="utf-8">...<input id="submit-838644811" type="submit" value="Envoyer"><script type="text/javascript">
//<![CDATA[
$("#submit-838644811").bind("click", function (event) {$.ajax({async:false, data:$("#submit-838644811").closest("form").serialize(), dataType:"html", success:function (data, textStatus) {$("#message").html(data);}, type:"post", url:"\/agralis\/FilesManagers"});
return false;});
//]]>
</script></form>
$this->Js->submit('Envoyer', array(
    'url' => array('action' => 'add')
    // ...
));