我使用的jquery的atuocomplete出现了一个jQuery.autocomplete() not a function ,autocomplete非函数的问题.
我的源码:
// 搜索的自动完成
if($(“#kw”).size() && categories){
$(“head”).append($(“<link rel=’stylesheet’ type=’text/css’ href=’”+baseUrl+”js/jquery.ui.autocomplete.css’ />”))
.append($(“<script src=’”+baseUrl+”js/jquery.ui.core.min.js’></script>”))
.append($(“<script src=’”+baseUrl+”js/jquery.ui.widget.min.js’></script>”))
.append($(“<script src=’”+baseUrl+”js/jquery.ui.position.min.js’></script>”))
.append($(“<script src=’”+baseUrl+”js/jquery.ui.autocomplete.min.js’></script>”));
$(“#kw”).autocomplete({source: categories});
}
问题描述:
jQuery.autocomplete() not a function ,autocomplete非函数
在本地测试成功,放到服务器就失败.
域名带www则成功,不带www则失败.
问题原因:
调用autocomplete()函数时,autocomplete.min.js等JS并未完全加载完成,它的加载默认为ajax加载.
同时,带www和不带www的ajax调用十分不同,可以说不到www的为非正规写法,ajax调取会失败.
解决方法:
方式一.直接把jQuery.autocomplete()使用到的css和js,写到<head>中.
方式二.使用js状态码来判断ajax是否完成,然后调用autocomplete()
方式三.对页面进行301重定向到含有www的页面.