Как автоматически заполнить предпочтительные страны из intl-tel-input с помощью db output

Я хотел бы заполнить предпочитаемые страны:["xx","yy","zz"] функцией, которая выбирает наиболее часто используемые коды стран из базы данных mysql и сначала перечисляет их с наивысшим значением и, по крайней мере, с числом 4

У меня есть сайт с bootstrap4 и datatables, и я хочу заполнить список предпочтений, чтобы вам не пришлось переходить к многим.

var input = document.querySelector("#CountryPhone");
var iti = window.intlTelInput(input, {
    initialCountry: "auto",
    separateDialCode: "true",
    autoPlaceholder: "aggressive",
    utilsScript: "https://cdnjs.cloudflare.com/ajax/libs/intl-tel- 
        input/14.0.7/js/utils.js",
    preferredCountries:["gb","us","at"],
    geoIpLookup: function(success, failure) {
        $.get("https://ipinfo.io", function() {}, 
           "jsonp").always(function(resp) {
            var countryCode = (resp && resp.country) ? resp.country : ""; 
            success(countryCode);
            });
        },
    });

У меня есть этот sql в функции в отдельном файле PHP:

"SELECT DISTINCT c.iso_code FROM countries c
LEFT JOIN customer cu on c.country_name = cu.country_name
GROUP BY c.country_name
HAVING count(cu.country_name) >= 4
ORDER BY count(cu.country_name) DESC, c.iso_code ASC"

и возвращаемое значение является выходным сигналом json_encoded, подобным тому, который необходим:["xx","yy","zz"]

Я думал сделать что-то вроде:

preferredCountries: function() {
    $.ajax({
    url:"fetch.php",
    method:"POST",
    data:{action:"f2Countries"},
    dataType:"json",
    success:function(data){},
    error: function() {  }
 });
 },

Но я не силен в этом, так что мои навыки угадывания выросли. Функция подлужбы предпочтения никогда не вызывается. У меня включена отладка и точка останова внутри функции, к которой она должна идти, но она никогда не заходит так далеко.

Так что нужна помощь в создании правильной функции, например, для geoIpLookup, которую я позаимствовал из документации.

1 ответ

Я наконец решил свою проблему.

Итак, в основном я хотел динамически заполнить «preferedCountries» кодами стран тех стран, которые использовались чаще всего, и в порядке убывания.

с вызовом $.ajax() я прошу свою базу данных получить коды стран в порядке убывания и вернуть данные в формате json

Я обязательно уничтожаю var iti и повторно инициирую его с переменной.

      preferedCountries = JSON.parse(data)
iti.destroy();
iti = window.intlTelInput(input, {
    separateDialCode: "true",
    autoHideDialCode: "true",
    autoPlaceholder: "polite",
    preferredCountries: preferedCountries,
    utilsScript: "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/14.0.7/js/utils.js",
    customPlaceholder: function(selectedCountryPlaceholder, selectedCountryData) {
        return "e.g. " + selectedCountryPlaceholder;
    }
});
Другие вопросы по тегам