Jquery中的Ajax自动完成无法显示结果

时间:2015-12-15 23:37:34

标签: javascript php jquery ajax

我有以下代码:

$(document).ready(function() {
        src = '<?php echo admin_url( 'admin-ajax.php' ); ?>';
        // Load the cities straight from the server, passing the country as an extra param
        $("#k").autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: src,
                    dataType: "json",
                    data: {
                        k       : request.term,
                        dict    : $("#dict").val(),
                        action  :"autocomplete_dict"
                    },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return item.value;
                        }))
                    }
                });
            },
            // optional (if other layers overlap autocomplete list)
            open: function(event, ui) {
                $(".ui-autocomplete").css("z-index", 1000);
                $(".ui-autocomplete-loading").css("background:url",'img/indicator.gif no-repeat right center');
            },
            min_length: 3
        });
        });

anwer表单服务器

["Lebemann","Leben","leben","lebend","lebendig"]

我可以看到从浏览器到服务器的请求,但无法显示结果表单服务器。 Sommeone可以帮助我。我做错了什么?

2 个答案:

答案 0 :(得分:1)

我会捅这个。你的问题在新手jQuery中很常见。 $ .ajax是一个异步函数,意味着它是一个非阻塞任务。在返回任何数据之前,函数本身就会完成。我认为你要做的就是计算时间,以便你知道数据论证中有什么东西。

    $.ajax({
                    url: src,
                    dataType: "json",
                    data: {
                        k       : request.term,
                        dict    : $("#dict").val(),
                        action  :"autocomplete_dict"
                    },
                    success: function (data) {
                        $("#K").autocomplete({
                  Source:data // not sure what Response is but you may need to Response data if its a transformer of some sort.
})
                        }))
                    }
                });

首先触发ajax,然后在请求完成后立即启动带有实际数据的自动完成。

答案 1 :(得分:0)

您无法在成功函数上返回项目。

试一试:

...
success: function( data ) {
    response(data);
}

这可以工作!