我用ajax进行了实时搜索,我得到了一个控制台日志错误Uncaught Typeerror: undefined is not a function.
。该错误指向代码的第一行。我以前用过这个,它起作用了,不知道现在发生了什么,有什么想法吗?
$("input#search-staff").live("keyup", function() {
// Set Search String
var staffname = $(this).val();
// Do Search
if(staffname !== ''){
$.ajax({
type: "GET",
url: "_ajax/_tasks/search-staff.php",
data: { query: staffname },
cache: false,
success: function(html){
$("ul#staff-list").html(html);
}
});
}return false;
});
以下是函数的外观:
$(document).on("keyup", "input#search-staff", function(e) {
var staffname = $(this).val();
e.preventDefault();
if (!staffname) return;
$.get("_ajax/_tasks/search-staff.php", {query: staffname})
.done(function (html) {
$("ul#staff-list").html(html);
});
});
票据
- 从
.live()
切换到.on()
事件委派 - 返回早期深度嵌套较少的代码
- 使用jqXhr延迟事件处理程序(
.done()
)从.ajax()
切换到.get()
附言:尽量不要在客户端做cache: false
之类的事情。只需在响应标头(Cache-Control: no-cache, no-store
)中设置适当的HTTP缓存指令,并将客户端保留为默认值。
jQuery.live()在版本1.7中已弃用,并从jQuery 1.9中删除。使用jQuery.on()指令。