jQuery自动完成不向AJAX发送数据

时间:2017-09-07 13:25:41

标签: javascript jquery ajax

我在使用jQuery自动完成时遇到了一个糟糕的时间 - HTTP请求没有发生 - 根本没有数据传递给源。控制台没有关于任何错误的输出。

有没有人有想法?

对于记录 - 使用$.ajaxSetup()设置AJAX URL / CSRF密钥等,并且适用于所有其他$.ajax()次呼叫。

非常感谢所有帮助。感谢

$('.select_location_dropdown').autocomplete({
    source: function (request, response) {
        $.ajax({
        data: {
             action:'location_management',
             sub_ac:'get_location_list',
             query: request.term 
        },
            success: function(data) {
                var transformed = $.map(data.search_response, function (el) {
                    return {
                        label: el.name
                    };
                });
                response(transformed);
            },
         })

    },
    limit: 4,
    onAutocomplete: function(val) {
    },
    minLength: 1,
});

3 个答案:

答案 0 :(得分:0)

好像你没有为ajax调用添加url。 ajax调用通常如下所示:

dataValue2

答案 1 :(得分:0)

我认为这可能是因为自动完成对象末尾的额外逗号。

$('.select_location_dropdown').autocomplete({
    source: function (request, response) {
        $.ajax({
        data: {
             action:'location_management',
             sub_ac:'get_location_list',
             query: request.term 
        },
            success: function(data) {
                var transformed = $.map(data.search_response, function (el) {
                    return {
                        label: el.name
                    };
                });
                response(transformed);
            },
         })

    },
    limit: 4,
    onAutocomplete: function(val) {
    },
    minLength: 1
});

minLength不需要逗号,因为它是最后一个键值对。

答案 2 :(得分:0)

对于那些想知道我是否有这个工作的人来说,答案是否定的 - 不管是针对这个特定的用例。我现在使用Dev Bridge jQuery Autocomplete plugin用于其他AC用例。经过一些调整后,我的工作正常。

我正在考虑使用on(function(){});方法实现自己的方法,但决定反对它。

但是,对于这个特殊情况:

相反,我正在使用Google Maps Places Autocomplete API,这对我们需要的东西来说更合适,即使我们最终还是要为它付钱,它仍然需要"需要"那种情况。

以下是已实施的代码。它立刻就行了。

 function initAutocomplete() {
     try {
         autocomplete_from = new google.maps.places.Autocomplete(
             (document.getElementById('select_location_from')), {
                 types: []
             }
         );

         autocomplete_to = new google.maps.places.Autocomplete(
             (document.getElementById('select_location_to')), {
                 types: []
             }
         );

         autocomplete_to.addListener('place_changed', fillInAddress);
         autocomplete_from.addListener('place_changed', fillInAddress);
     } catch (ex) {}
 }

 function fillInAddress() {
     // Get the place details from the autocomplete object.
     var place_a = autocomplete_to.getPlace();
     var place_b = autocomplete_from.getPlace();

 }