CakePHP Friendsofcake搜索ajax结果

时间:2017-03-11 09:39:47

标签: ajax cakephp-3.0

抱歉,如果我在这里遗漏了一些简单的话。我正在使用CakePHP 3和Friendsofcake Search插件,并尝试使用AJAX加载我的结果。我不确定要为URL设置什么 - 我的理解是FormHelper url和AJAX url必须匹配SecurityComponent。然而,即使有残疾我也无法提交表格。任何帮助表示赞赏。该插件工作正常,否则我可以使用AJAX提交其他表单 - 我怀疑我在这里遗漏了一些东西(或者它不可能 - 我是一个初学程序员)

<?php
 $formUrl='//'.$_SERVER['HTTP_HOST'].Router::url(['controller'=>'Treasures','action'=>'frontIndex']);
echo $this->Form->create('Treasure',['id'=>'myForm','url'=>$formUrl]);
echo $this->Form->input('q');
... (Form submit, end, etc.)
?>

 <script>
$( "#myForm" ).submit(function( event ) {
   event.preventDefault();
    $.ajax({
    async:true,
    data:$(this).serialize(),
    dataType:"html",
    success:function (data, textStatus) {
       $(".ajax-result").html(data);
    },
    type:"POST",
    url:"<?=$formUrl?>"
   });
 </script>

<div class="ajax-result"></div>

有人可以告诉我我应该为$ formUrl设置什么?目前我正在使用它的Controller操作成功地使用搜索插件过滤数据,并且我已经专门用于在请求时返回AJAX结果的视图 - 但显然还有其他事情我正在丢失。

1 个答案:

答案 0 :(得分:0)

如果我将网址留空并使用GET而不是POST,这是有效的 - 应该早点考虑到这一点。

echo $this->Form->create('Treasure',['id'=>'myForm']);
...
?>

 <script>
$( "#myForm" ).submit(function( event ) {
   event.preventDefault();
   $.ajax({
     async:true,
     data:$(this).serialize(),
     dataType:"html",
     success:function (data, textStatus) {
       $(".ajax-result").html(data);
     },
     type:"GET"
    });
 </script>

按预期工作。希望这有助于某人!