2017-02-14 4 views
0

Вы можете заставить меня понять, почему этот код не работает должным образом?простой перенаправление jquery, основанный на стране, не работает должным образом

<html><head><title></title> 
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 
<script> 
jQuery.ajax({ 
    url: '//freegeoip.net/json/', 
    type: 'POST', 
    dataType: 'jsonp', 
    success: function(location) { 
    // If the visitor is browsing from Romania or GB 
    if (location.country_code === 'RO' || 'GB') { 
     // Redirect him to the Canadian store. 
     window.top.location.href = 'http://shop-in-canada.myshopify.com'; 
    } 
else 
{ return false; } 
    } 
}); 
</script> 
</head><body></body></html> 

Должным я имею в виду, что это перенаправляет меня на shop-in-canada.myshopify.com даже у меня есть GB или RO или США или CA или любой другой стране. Как вы думаете, откуда эта проблема?

+0

Не могли бы вы попробовать с этим ниже ваш '' 'dataType''',' '' данные: JSON.stringify''' – FreedomPride

+0

Это возвращение «XMLHttpRequest не может загрузить http://freegeoip.net/json/. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Поэтому исходный сайт .com 'не имеет права доступа. В ответе был код статуса HTTP 405. " в консоли. Но спасибо за помощь. Ответ @saravanan помог мне всем, что мне нужно! – Adrian

ответ

0

Я думаю, вы должны заменить

if (location.country_code === 'RO' || 'GB') { 
    // Redirect him to the Canadian store. 
    window.top.location.href = 'http://shop-in-canada.myshopify.com'; 
} 

в

if (location.country_code === 'RO' || location.country_code === 'GB') { 
    // Redirect him to the Canadian store. 
    window.top.location.href = 'http://shop-in-canada.myshopify.com'; 
} 

Для многократной проверки, сделать

var language = ["RO", "GB"]; 
if (language.indexOf(location.country_code) !== -1) { 
    // Redirect him to the Canadian store. 
    window.top.location.href = 'http://shop-in-canada.myshopify.com'; 
} 
+0

Это сработало. Спасибо, но здесь нет способа не повторять location.country_code каждый раз? – Adrian

+0

Я обновил ответ. Пожалуйста, проверьте –

+0

Отлично, это потрясающе. Огромное спасибо. – Adrian

1
if (location.country_code === 'RO' || 'GB') 

не будет работать. Запустив эту строку, вы не получите true или false назад, но вместо этого вы получите "GB".

Просто заменив выше

if (location.country_code === 'RO' || location.country_code === 'GB')

будет делать трюк.

+0

Просто FYI: использование этого веб-сайта может быть не лучшим, поскольку у меня есть рекламный блок, и он не работал на меня, не отключив его в первую очередь. – FibreChips

+0

Что вы посоветуете мне использовать, чтобы не блокировать рекламный блок? @fibrechips – Adrian

+1

Можно отправить бесплатный адрес IP-адреса: https://freegeoip.net/json/xxx.xx.xx.xxx - просто отправьте IP-адрес клиента с вашего сервера и перенаправьте на основе ответа там вместо того, чтобы делать это клиентская сторона. – AmericanUmlaut

0

Ну, вы можете попробовать, как это сделать для каждого кода страны.

jQuery.ajax({ 
       url: '//freegeoip.net/json/', 
       type: 'POST', 
       dataType: 'jsonp', 
       success: function(location) { 
        if (location.country_code === 'US') { 
         // do nothing 
        } 
        else if (location.country_code === 'AU') { 
         window.location.href = 'http://yoururlhere.com'; 
        } 
        else if (location.country_code === 'SE') { 
         window.location.href = 'http://yoururlhere.com'; 
        } 
        else if (location.country_code === 'NL') { 
         window.location.href = 'http://yoururlhere.com'; 
        } 
        else if (location.country_code === 'GB') { 
         // window.location.href = 'http://yoururlhere.com'; 
        } 
       } 
      }); 
+0

Спасибо, но более практично для меня использовать if (var = 'country1' || var = 'country2' || var = 'country3' || var = 'country4' || var = 'countr5y' || var = 'country6' || var = 'country7'), потому что я пытаюсь перенаправить все эти страны на один URL-адрес, остальные - на другие. – Adrian