简体   繁体   中英

CakePHP can't get ajax GET working

I can't seem to get AJAX POST or GET working with my CAKEPHP site. I am trying to create autocomplete but can't seem to submit or fetch the data using ajax. I can get auto complete working using tags but I cannot display the data from my table. I am not sure what is going wrong if i'm not using the right url or some other problem. Here is my search.ctp

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

Here is my search function in my 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']);


    }
}

This is the error that is produced when I try to type in an ID. 在此处输入图片说明

This is what i want to produce which I have been able to do by using an array in search.ctp 在此处输入图片说明

and here is my table I am trying to fetch the IDs from. 在此处输入图片说明

有两种方法。

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM