2017-03-11 3 views
0

Entschuldigung, wenn ich hier etwas Einfaches vermisse. Ich benutze CakePHP 3 und das Friendfonsuche Plug-in und versuche meine Ergebnisse mit AJAX zu laden. Ich bin mir nicht sicher, was ich für die URL einstellen soll - ich verstehe die FormHelper-URL und die AJAX-URL muss für SecurityComponent übereinstimmen. Aber selbst mit dieser Behinderung kann ich das Formular nicht einreichen. Jede Hilfe wird geschätzt. Das Plugin funktioniert gut anders und ich kann andere Formen einreichen AJAX ganz gut - ich vermute ich etwas bin hier fehlt (oder es ist nicht möglich - ich bin ein Anfang Programmierer)CakePHP Friendsofcake Suche Ajax Ergebnisse

<?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> 

Kann mir jemand sagen, was ich sollte Einstellung für die $ formUrl? Momentan filtert die Controller-Aktion, mit der ich diese Funktion aktiviere, erfolgreich Daten mit dem Such-Plugin und ich habe mich darauf spezialisiert, AJAX-Ergebnisse auf Anfrage zurückzugeben - aber da ist offensichtlich etwas anderes los, was ich vermisse.

Antwort

0

Das funktioniert, wenn ich die URL leer lasse und GET anstelle von POST benutze - sollte früher daran gedacht haben.

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> 

Funktioniert wie erwartet. Hoffe das hilft jemandem!