2017-07-07 34 views
0

Ich kann nicht scheinen, AJAX POST oder GET Arbeiten mit meiner CAKEPHP-Website. Ich versuche, Autocomplete zu erstellen, kann aber nicht scheinen, die Daten mit Ajax zu übermitteln oder abzurufen. Ich kann die automatische Vervollständigung mit Tags erreichen, aber ich kann die Daten von meiner Tabelle nicht anzeigen. Ich bin mir nicht sicher, was schief geht, wenn ich nicht die richtige URL oder ein anderes Problem verwende. Hier ist meine search.ctpCakePHP kann nicht Ajax bekommen GET arbeiten

<?php use Cake\Routing\Router; ?> 

    <?php echo $this->Form->input('id', ['type' => 'text']); ?> 

<script> 
    $.ajax({ 
    type:  "POST", 
    url:  "<?php echo Router::url(array('controller' => 'Invoices', 'action' => 'search')); ?>", 
    success: function(response) { 
     $("#id").autocomplete({ source: response }); 
    } 
}); 
</script> 

Hier ist meine Suchfunktion in meinem InvoicesController.

public function search() 
{ 
    $this->loadComponent('RequestHandler'); 
    if ($this->request->is('ajax')) 
    { 
     $name = $this->request->query['term']; 
     $resultArr = $this->Invoices 
    ->find() 
    ->where(
     ['Invoices.id LIKE' => ($name . '%')], 
     ['Invoices.id' => 'string'] 
    ); 

     $resultsArr = []; 
     foreach ($resultArr as $result) 
     { 
      $resultsArr[] = (strval($result['id'])); 
     } 

     $this->set('resultsArr', $resultsArr); 
     // This line is what handles converting your array into json 
     // To get this to work you must load the request handler 
     $this->set('_serialize', ['resultsArr']); 


    } 
} 

Dies ist der Fehler, der erzeugt wird, wenn ich versuche, eine ID einzugeben. enter image description here

Das ist, was ich produzieren will, die ich unter Verwendung eines Array in search.ctp enter image description here

und hier ist meine Tabelle I aus den IDs zu holen versuche tun konnten. enter image description here

+0

Es nicht einmal scheint Ihre PHP-Datei in erster Linie zu sein, zu finden, so dass die Abfrage oder die Tabelle nicht das Problem ist. Möglicherweise hat Ihre AJAX-Anfrage eine ungültige URL. Schreiben Sie die erwartete URL in die Konsole und prüfen Sie, ob sie korrekt ist. – Difster

+0

Ich denke, es ist auch möglich, dass Ihr Kuchen-Routing nicht richtig eingerichtet ist. – Difster

+0

Sie sollten die Registerkarte Netzwerk überprüfen, um herauszufinden, was gesendet und empfangen wird, überprüfen Sie auch Ihre Fehlerprotokolle. Die Anforderungshandlerkomponente btw. sollte in der 'initialize()' Methode geladen werden (was normalerweise schon standardmäßig in 'AppController' ist). – ndm

Antwort

0

Es gibt zwei Methoden.

  1. $this->request->query('term');
  2. $_REQUEST['term'];