1

每当我在自动完成字段中输入一个 ajax 请求时,我就没有为此编写任何代码。检查控制台,我看到这是对控制器的 400 GET 请求,该控制器加载了这个视图,并在 url 上附加了参数(json)。我完全被难住了。

<head>
<script data-main="<?=base_url()?>public/requirejs/main.js" src="<?=base_url()?>public/requirejs/require-jquery.js"></script>
<script>
    requirejs(['a_mod'],
        function(a_mod) {
            $(document).ready(function() {
                var param = [];
                param = $('#elem').attr('value');
                a_mod.foo(param, "#someElem");
            });
        });
<script>

main.js

require(["jquery",
         "jquery-ui"],
         function() {

         }
);

自动完成功能

'foo' : function(param, elementAutocomplete, elementTags) {
        console.log("init ac");
        $(elementAutocomplete).autocomplete({
            source: param,
            minLength: 1,
            select: function (event, ui) {
                event.preventDefault();
                //
            }

        }).data( "autocomplete" )._renderItem = function( ul, item ) {
            return $("<li></li>")
                .data( "item.autocomplete", item )
                .append( '<a>' + item.label  + '</a>' )
                .appendTo(ul);
        }
    },
4

1 回答 1

2

source的自动完成器属性是一个字符串:

param = $('#elem').attr('value');

字符串source表示它是一个 URL :

只需指定源选项,即可自定义自动完成以使用各种数据源。数据源可以是:

  • 包含本地数据的数组
  • 一个字符串,指定一个 URL
  • 回调

var param = [];只是意味着它param被初始化为一个空数组,并不意味着它param总是一个数组。您需要将您的param值固定为一个数组。

于 2012-07-05T05:05:48.317 回答