2016-05-16 9 views
0

Im Folgenden finden Sie den jsp Seite Tag für Eingabetextelement:der automatische Vervollständigung nicht für Quelle des JSON-Objekt zu akzeptieren

<input name="searchTextSpan" id="searchTextSpan" type="text"/> 

unten ist der Ajax-Aufruf, dass Lasten auf dcument.ready:

AUI().use("liferay-portlet-url", function(A) { 
    var resourceURL = Liferay.PortletURL.createResourceURL(); 
    resourceURL.setPortletId("app_war_portlet"); 
    resourceURL.setResourceId(resourceId); 
    require(["dojo/request", "dijit/registry", "dojo/on", "dojo/domReady!"], function(request){ 
      request.post(resourceURL.toString(), { 
       query: ajaxData, 
       handleAs: "json" 
      }).then(function(data){ 
       if(resourceId == 'inputTextClick'){ 
        AUI().use("liferay-portlet-url", function(A) { 
         var resourceURL = Liferay.PortletURL.createResourceURL(); 
          resourceURL.setPortletId("app_war_portlet"); 
         if(data.cachetmpArr!=null && data.cachetmpArr.length>0){ 
          var cacheList = JSON.stringify(data.cachetmpArr); 
          cacheList = cacheList.replace(/"/g, "'"); 
          console.log('cacheList12 '+cacheList);//['106182233','206182233','306182233']; 
            $('#searchTextSpan').autocomplete({ 
               width: 300, 
               max: 10, 
               delay: 100, 
               minLength: 1, 
               autoFocus: true, 
               cacheLength: 1, 
               scroll: true, 
               highlight: false, 
               source:cacheList, 
              }).focus(function(){ 
              $(this).autocomplete("search", ""); 
              }); 
         } 
        }); 

       } 

      }); 
    }) 
}) 

die Quelle Attribut akzeptiert die CacheList nicht, es löst 404 URL Fehler aus. können Sie bitte vorschlagen

+0

Ich glaube nicht, dass Sie auch die JSON bekommen. Daher müssen Sie möglicherweise debuggen, warum der Aufruf an den Server fehlschlägt. –

+0

Ich bekomme den JSON-Objektwert console.log ('cacheList12' + cacheList); // ['106182233', '206182233', '306182233']; das ist was ich bekomme. falls ich den Wert wie cacheList = ['106182233', '206182233', '306182233'] gebe, funktioniert es! aber die objec direkt übergeben es nicht –

+0

in Ordnung. Dann müssen Sie Ihren JSON analysieren, bevor Sie ihn an die automatische Vervollständigung übergeben. 'JSON.parse (CacheList)'. Denken Sie daran, JSON ist eine 'Zeichenfolge', während Autocomplete ein' Array' benötigt –

Antwort

0

Sie müssen parse JSON, bevor Sie es an autocomplete übergeben.

So:

$('#searchTextSpan').autocomplete({            


width: 300, 
    max: 10, 
    delay: 100, 
    minLength: 1, 
    autoFocus: true, 
    cacheLength: 1, 
    scroll: true, 
    highlight: false, 
    source:JSON.parse(cacheList), // parse JSON response 
    }).focus(function(){ 
    $(this).autocomplete("search", ""); 
}); 
+0

Ich bekomme keinen Fehler, aber es ist kein Dropdown für meine vorhergesuchten Einträge sichtbar :(Auch wenn ich diese console.log ('vals' + JSON .parse (cacheList)); es gibt mir blank .... –

+0

Kannst du auch versuchen, die 'focus' Methode zu entfernen? –

+0

ja ich habe versucht, Fokus-Methode zu entfernen, noch gibt es keinen Tropfen für die vorherigen gesuchten Werte sichtbar .. –