2017-09-07 23 views
1

我有一個可怕的時間使用jQuery自動完成 - HTTP請求沒有發生 - 沒有數據被傳遞到源。沒有任何錯誤輸出到控制檯。jQuery自動完成不發送數據到AJAX

有沒有人有想法?

爲了記錄 - AJAX URL/CSRF密鑰等設置使用$.ajaxSetup()和工作正常的所有其他$.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, 
}); 
+0

'錯誤'函數不會拋出任何東西?我只看到你使用成功功能。也許你可以給我們一個完整的例子(包括ajaxSetup)? – Patte

+0

據我所知,它不是一個特別的ajax錯誤 - 我已經將函數包裝在一個'if($('。select_location_dropdown.autocomplete')。length){}'中,以確保它實際上知道它存在它確實是因爲我已經將它寫入控制檯)。我在'source:function(x,y)'之後添加了一個'console.log()',它不被調用。 – DomLip

+0

你有頭鏈接到jquery腳本嗎? '',也請看看這裏,試試看看他們是否會工作https://cdnjs.com/libraries/jquery/ – JeanPaul98

回答

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(); 

} 
0

好像你還沒有添加ajax調用的網址。一個阿賈克斯調用通常看起來像這樣:

$.ajax({ 
    url: 'http://example.com', 
    data: {}, 
}); 
+0

已經說過了 - 在$ .ajaxSetup()中設置。 – DomLip

+0

我的不好。它可以被瀏覽器阻止,就像因爲CORS說的那樣? – maxuville

+0

Nah - 我們通過jsonp運行請求。其餘的都是成功的(我們有一個完整的訂單系統,它似乎沒問題,這裏的問題似乎是沒有數據被傳遞給'source:function()',因爲它內部的console.log也是不要發射奇怪 – DomLip

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不需要逗號,因爲它是最後一個鍵值對。

+0

仍然沒有:(仍然沒有發送數據到源函數重刑 – DomLip