javascript - 为什么我的自动完成功能不起作用?

标签 javascript jquery autocomplete

我有一个 jQuery 自动完成函数,在我用函数重写源代码之前它工作得非常好。

奇怪的是,两个函数返回完全相同的数据,但是,当我向源中添加 ajax 函数时,自动完成功能不再起作用。

工作代码:

    $('#q').autocomplete({
    source:'getklanten.php'

    }).data( "ui-autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li>" )
        .append( "<a>" + item.naam + "</a>" )
        .appendTo( ul );
   };

此代码在控制台中返回

GET http://myURL/getklanten.php?term=comp
[{"naam":"Company name","id":12345}]

自动完成函数按预期工作并返回结果。

无法使用可变函数运行代码:

var dynamicVar = $('#zxc').prop('checked');

$('#zxc').change(function(){
    dynamicVar = $('#zxc').prop('checked');
    dynamicVar = $('#zxc').is(':checked');
    console.log(dynamicVar);
});

$('#q').autocomplete({
    //source:'getklanten.php'
    source: function(request, response) {
        $.ajax({
          url: "getklanten.php",
          data: {
            term : request.term,
            supplier : $('#zxc').is(':checked')
          }
        });
    }
}).data( "ui-autocomplete" )._renderItem = function( ul, item ) {
    return $( "<li>" )
    .append( "<a>" + item.naam + "</a>" )
    .appendTo( ul );
};

此代码在控制台中返回:

GET http://myURL/getklanten.php?term=comp&supplier=false
[{"naam":"Company name","id":12345}]

但是,这会破坏自动完成功能。没有任何错误。即使两个函数返回完全相同的数据.. 有人可以帮助我阐明这一点并告诉我为什么会发生这种情况吗?

最佳答案

您正在启动 ajax 调用,但没有使用调用的响应。 source函数中的response参数是一个回调,可以在ajax调用成功后触发。

$('#q').autocomplete({
    //source:'getklanten.php'
    source: function(request, response) {
        $.ajax({
            url: "getklanten.php",
            data: {
                term : request.term,
                supplier : $('#zxc').is(':checked')
            },
            success: function(data){
                response(data);
            },
            error: function(){
                response();
            }
        });
    }
});

即使遇到错误,您也必须始终调用 response 回调。

参见http://api.jqueryui.com/autocomplete/#option-source了解更多信息。

关于javascript - 为什么我的自动完成功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26398830/

相关文章:

javascript - 如何使用 javascript 变量作为键来访问 asp.net mvc 中的 session 变量?

javascript - 插页式广告(异步广告),无需在网站上放置任何代码

autocomplete - LimeSurvey 自动完成功能

javascript - 在 Javascript 类中声明函数的最佳方式是什么?

javascript - FabricJS:始终在 Canvas 上居中对象

javascript - JQuery - 将列表项附加到列表的最快方法

javascript - if (xmlhttp.readyState==4 && xmlhttp.status==200) 在 AJAX 中不执行

php - 使用 AJAX 调用和 JSON 数据填充表单

javascript - Stickit 不保存自动完成字段中的值

php - 自动完成连接 2 列 MySQL 和 PHP