【发布时间】:2016-09-11 19:33:55
【问题描述】:
下面是输入文本元素的jsp页面标签:
<input name="searchTextSpan" id="searchTextSpan" type="text"/>
下面是在 dcument.ready 上加载的 ajax 调用:
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", "");
});
}
});
}
});
})
})
源属性不接受它抛出 404 url 错误的 cacheList。 你能建议吗
【问题讨论】:
-
我认为你甚至没有得到 JSON。所以你可能需要调试调用服务器失败的原因。
-
我确实得到了 json 对象值 console.log('cacheList12 '+cacheList);//['106182233','206182233','306182233'];这就是我得到的。如果我给出 cacheList=['106182233','206182233','306182233'] 之类的值,它可以工作!但直接传递对象它不会捡起
-
好的。然后,您需要在将 JSON 传递给自动完成之前解析它。
JSON.parse(cacheList)。请记住,JSON 是string,而自动完成需要array
标签: javascript ajax liferay-6 jquery-autocomplete