2014-12-24 4 views
0

Я следовал http://www.liferaysavvy.com/2014/02/liferay-aui-auto-complete-list.html для автоматического завершения, я получаю данные с сервера в следующем формате (в коде:автозаполнение не работает Liferay 6.2

alert('jsonArray came: ' + jsonArray)) 

дает следующие,

[ 
    { 
     "roleName": "Organization User", 
     "roleId": 10147 
    }, 
    { 
     "roleName": "Site Admin", 
     "roleId": 16883 
    }, 
    { 
     "roleName": "Student", 
     "roleId": 18139 
    }, 
    { 
     "roleName": "Parent", 
     "roleId": 18146 
    }, 
    { 
     "roleName": "Faculty", 
     "roleId": 18153 
    }, 
    { 
     "roleName": "SchooloneStudent", 
     "roleId": 27701 
    } 
] 

, но из кода: новый A.AutoCompleteList не может получить данные. Может ли кто-нибудь мне помочь?

<aui:script> 
AUI().use('autocomplete-list','aui-base','aui-io-request','autocomplete-filters','autocomplete-highlighters',function (A) { 
A.io.request('<%=getRoles%>',{ 
dataType: 'json', 
method: 'GET', 
on: { 
success: function(event, id, obj) { 

var instance = this ; 
var data = instance.get('responseData'); 
var jsonArray = JSON.stringify(data); 
alert('result came: ' + data); 
alert('jsonArray came: ' + jsonArray); 
try { 
new A.AutoCompleteList(
{ 
allowBrowserAutocomplete: 'false', 
activateFirstItem: 'true', 
inputNode: '#<portlet:namespace />ListOfRoles', 
resultTextLocator: 'roleName', 
render: 'true', 
resultHighlighter: 'phraseMatch', 
resultFilters:['phraseMatch'], 
source:jsonArray, 
}); 
}catch(e) { 
alert('not working : ' + e); 
} 
} 

} 
}); 

}); 
</aui:script> 

ответ

0

Я думаю, вам не нужно указывать ответ, поскольку вы уже получаете ответ в формате JSON. Там могут быть некоторые несоответствия данных ... Попробуйте это:

<aui:script> 
AUI().use('autocomplete-list','aui-base','aui-io-request','autocomplete-filters','autocomplete-highlighters',function (A) { 
A.io.request('<%=getRoles%>',{ 
      dataType: 'json', 
      method: 'GET', 
      on: { 
       success: function(event, id, obj) { 

        try { 
        new A.AutoCompleteList(
          { 
          allowBrowserAutocomplete: 'false', 
          activateFirstItem: 'true', 
          inputNode: '#<portlet:namespace />roleNames', 
          resultTextLocator: 'roleName', 
          render: 'true', 
          resultHighlighter: 'phraseMatch', 
          resultFilters:['phraseMatch'], 
          source:this.get('responseData'), 
          autoLoad:false, 
          sync:false, 
          }); 
         }catch(e) { 
         alert('not working: ' + e); 
        } 
       } 

       } 
      }); 

}); 
</aui:script> 

Спасибо,

~ Chandan