神秘的ajax请求以某种方式发生

时间:2012-07-05 04:58:00

标签: javascript jquery jquery-ui jquery-ui-autocomplete requirejs

每当我输入自动填充字段时,都会发送一个ajax请求,并且我没有编写任何代码来执行此操作。检查控制台我看到它是对控制器的400 GET请求,该控制器加载了该视图,并在URL上附加了param(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);
        }
    },

1 个答案:

答案 0 :(得分:2)

自动填充程序的source属性是一个字符串:

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

string source means它是一个网址:

  

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

     
      
  • 包含本地数据的数组
  •   
  • 一个String,指定一个URL
  •   
  • a Callback
  •   

var param = [];只是意味着param被初始化为空数组,并不意味着param将始终是一个数组。您需要将param值修复为数组。