【问题标题】:jquery ui autocomplete with ajax data source带有ajax数据源的jquery ui自动完成
【发布时间】:2012-10-17 12:02:28
【问题描述】:

我正在尝试将 jquery ui 自动完成功能与 ajax 数据源一起使用,但我看不出我的代码有什么问题。

这是我的代码

$(document).ready(function () {

        var data = new Portalen.LitteraNumberData();

        $("#LitteraNumber").autocomplete({
            minLength: 1,
            source : function (request, response) {
                var customerId = $("#CustomerId").val();
                return response(data.loadLitteraNumbers(customerId));
            }
        });
    });

在一个 js 文件中我有这个:

Portalen.LitteraNumberData = function () { };

Portalen.LitteraNumberData.prototype = function() {

var loadLitteraNumbers = function(customerId) {
    $.get("/Orders/GetLitteraNumbers", { customerId: customerId }, function (response) {
        return response;
    });
};

return {
    loadLitteraNumbers: loadLitteraNumbers
};
}(); 

ajax 调用正常,我得到了正确的响应,但自动完成功能不会发生。 LitteraNumberData 返回错误的东西吗?欢迎提出所有建议。

【问题讨论】:

    标签: jquery jquery-ui-autocomplete


    【解决方案1】:

    试试这个:

    $(document).ready(function () {
        var data = new Portalen.LitteraNumberData();
        $("#LitteraNumber").autocomplete({
            minLength: 1,
            source : function (request, response) {
                $.get("/Orders/GetLitteraNumbers", { customerId: request.term }, function (data) {
                    response(data);
                });
            }
        });
    });
    

    我已将 $("#CustomerId").val() 替换为 request.term。而且,该函数不需要返回响应。

    $.get 函数是异步的,所以你不能把它放在别处。

    【讨论】:

    • 感谢您的回答,我真的希望能够将脚本封装在 js 文件中,并使其在其他地方可重用。我真的很想知道为什么我的方法不起作用。
    • 您的方法不起作用,因为$.get 是异步的。 loadLitteraNumbers()$.get 返回结果之前完成。我认为这就是重点。
    • 用 jquery ui 自动完成的版本是什么? Uncaught ReferenceError: Portalen is not defined
    猜你喜欢
    • 2012-08-04
    • 2011-02-02
    • 1970-01-01
    • 2012-11-16
    • 2015-09-14
    • 2011-04-17
    • 2021-05-27
    • 2011-04-23
    • 1970-01-01
    相关资源
    最近更新 更多