1

每當我輸入autocomplete字段發送一個Ajax請求,並沒有代碼,我已經寫了這樣做。檢查控制檯我看到它是一個400控制器的GET請求,該請求通過param(json)加載到url。我絕對難住。神祕阿賈克斯請求發生在某種程度上

<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); 
     } 
    }, 

回答

2

source屬性爲autocompleter是一個字符串:

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

而一個string source means這是一個網址:

自動完成功能可以自定義各種數據源的工作,僅通過指定源選項。數據源可以是:

  • 與本地數據
  • 字符串,指定URL的Array
  • 回調

話說var param = [];只是意味着param被作爲空初始化數組,它並不意味着param將始終是一個數組。你需要修正你的param值是一個數組。