Jquery自动完成不显示Cakephp路由的值

时间:2017-07-06 10:05:22

标签: javascript php jquery cakephp autocomplete

我正在尝试使用Jquery自动完成来显示我在cakephp中的表中的数据。我可以使用标签自动完成工作,但我无法显示表格中的数据。在正确返回的情况下搜索表中的相似数据的功能,但我不完全确定它是否正确地将其传递给自动完成脚本。我仍然很新,有些帮助或提示将不胜感谢,谢谢:D。

这是我在InvoicesController.php中的搜索功能

$( "#salary" ).click(function() {

   $( "#salary" ).val(  $("#salary").val().replace(/,/g, ''));

});



$( "#salary" ).blur(function() {

   $( "#salary" ).val( addCommas($( "#salary" ).val());

});

function addCommas(nStr) {

    nStr += '';
    var x = nStr.split('.');
    var x1 = x[0];
    var x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;

}

这是我的search.ctp中的代码

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']);


    }
}

这是函数返回的内容以及自动完成下拉菜单中显示的内容。

enter image description here

使用testTags数组

应该是这样的

enter image description here

视图中的视图是什么样的。

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

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

<script>
    var testTags = ['52332', '56346', '5734'];
    var tags = '<?php echo Router::url(array('controller' => 'Invoices', 'action' => 'search')); ?>'
    jQuery('#id').autocomplete({
        source: tags,
        minLength: 1
    });
</script>

1 个答案:

答案 0 :(得分:0)

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

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

<script>
    var testTags = ['52332', '56346', '5734'];
    var tags = $.post(url:'<?php echo Router::url(array('controller' => 'Invoices', 'action' => 'search')); ?>');
    jQuery('#id').autocomplete({
        source: tags,
        minLength: 1
    });
</script>

尝试使用Jquery $ .post或$ .get通过ajax获取数据