Помогите поправить скрипт определяющий гео с помощью API Яндекса

12
W
На сайте с 14.11.2012
Offline
41
3568

Всем привет. Есть скрипт определения гео через API Яндекса.

<!-- Geo -->
<script src="http://yastatic.net/jquery/2.1.1/jquery.min.js"></script>
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU"type="text/javascript"></script>
<script type="text/javascript">
window.onload =function(){
jQuery(".user-city").text(ymaps.geolocation.city);
jQuery(".user-region").text(ymaps.geolocation.region);
jQuery(".user-country").text(ymaps.geolocation.country);}
</script>
<!-- /Geo -->

Периодически я его использую, для отображение на сайте города, области или страны пользователя. В текст сайта я вывожу данные с помощью присвоенного класса тегу span

<span class="user-country"></span>

Но, сейчас появилась необходимость слегка доработать скрипт под немного другие нужды. Мне необходимо, чтобы скрипт в зависимости от определенной страны присваивал нужное мне значение новой переменной. А именно стоимость товара с валютой этой страны. Это нужно сделать всего лишь для четырех стран. России, Украины, Белоруссии и Казахстана. То есть в случае определившегося значения Россия в user-country, необходимо чтобы скрипт задавал в новую переменную значение, к примеру "1000 рублей". В случае определявшегося Казахстана - "5000 тенге" и т.д. для всех 4 стран. А я соответственно вставлял бы эти значение в текст таким же способом как я и делаю это с гео. Только вместо class="user-city", class="user-region" или class="user-country" уже другое название новой переменной. Помогите, пожалуйста, поправить данный срипт. Я в JS мало, что понимаю. Но, думаю для опытного человека, подобный скрипт несложен в реализации. Очень был бы вам благодарен за помощь.

S
На сайте с 17.08.2008
Offline
114
#1

Имхо делать перерасчет в джаваскрипте неудобно, поэтому лучше воспользоваться sypexgeo.net там есть пхп файл с примером определения страны.

В пхп скрипте смотрите из какой страны пользователь, выводите ему цены в своих валютах со своим курсом.

W
На сайте с 14.11.2012
Offline
41
#2
smbbws:
Имхо делать перерасчет в джаваскрипте неудобно, поэтому лучше воспользоваться sypexgeo.net там есть пхп файл с примером определения страны.

В пхп скрипте смотрите из какой страны пользователь, выводите ему цены в своих валютах со своим курсом.

Не думаю, что мне это будет проще. Во-первых он платный. А во-вторых в нем также придется, все это дописывать под себя. И опять же не факт, что я разберусь сам.

Возможно вы меня не правильно поняли. Или может я вас. Зачем там что-то пересчитывать? Ведь новые данные можно сказать произвольные. Мне же не нужно конвертировать валюты или что-то подобное. По сути в место 1000 рублей можно задать что угодно. Мне необходимо чтобы скрипт проверял значение user-country. И в случае нахождения в значении той или иной страны присваивал новой переменой то или иное значение. Что-то на подобии оператора switch в php.

---------- Добавлено 08.02.2017 в 22:27 ----------

Подскажите хотя бы кто-нибудь как передать значение .user-country в переменную php. А там уж я дальше сам разберусь.

D
На сайте с 31.01.2017
Offline
15
#3

Так switch фактически такой же как в php.

switch (ymaps.geolocation.country) {

case 'Россия':
// делаем что нам нужно
break;

default:
// тут значение по умолчанию
}

На сервер можно отправить так

$.ajax({

type: "POST",
url: "some.php",
data: "country=" + ymaps.geolocation.country,
success: function(msg){
alert( "Прибыли данные: " + msg );
}
});

Тут все подробно расписано.

W
На сайте с 14.11.2012
Offline
41
#4
demiux:
Так switch фактически такой же как в php.
switch (ymaps.geolocation.country) {
case 'Россия':
// делаем что нам нужно
break;

default:
// тут значение по умолчанию
}

На сервер можно отправить так
$.ajax({
type: "POST",
url: "some.php",
data: "country=" + ymaps.geolocation.country,
success: function(msg){
alert( "Прибыли данные: " + msg );
}
});

Тут все подробно расписано.

Спасибо большое, завтра попробую разобраться. Надеюсь получится.

W
На сайте с 14.11.2012
Offline
41
#5

Попробовал я сегодня все это реализовать. Но, к сожалению, ничего не получилось.


<!-- Geo -->
<script type="text/javascript">
<script src="http://yastatic.net/jquery/2.1.1/jquery.min.js"></script>
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU"type="text/javascript"></script>
<script type="text/javascript">
window.onload =function(){
jQuery(".user-city").text(ymaps.geolocation.city);
jQuery(".user-region").text(ymaps.geolocation.region);
jQuery(".user-country").text(ymaps.geolocation.country);
switch (ymaps.geolocation.country) {
case 'Казахстан':
var currency = '5000 тенге';
document.querySelector('span.currency').innerHTML = currency;}
break;
case 'Беларусь':
var currency = '1000 бел. рублей';
document.querySelector('span.currency').innerHTML = currency;}
break;
default:
var currency = '1000 рублей';
document.querySelector('span.currency').innerHTML = currency;}
}
}
<!-- /Geo -->

Не одно из значений в html вывести не получается.

<div>

<span class="user-city">
<span class="user-region">
<span class="user-country">
<span class="currency">
</div>

Подскажите, пожалуйста, правильный вариант.

D
На сайте с 31.01.2017
Offline
15
#6

Лишние } стоят. Загляните в консоль браузера в хроме и FF: ctrl+shift+i. Там увидите ошибки.

Вот так должно работать. default не обязателен, по умолчанию будет 1000 рублей.

var currency = '1000 рублей';

switch (ymaps.geolocation.country) {
case 'Казахстан':
currency = '5000 тенге';
break;
case 'Беларусь':
currency = '1000 бел. рублей';
break;
}
document.querySelector('span.currency').innerHTML = currency;
W
На сайте с 14.11.2012
Offline
41
#7
demiux:
Лишние } стоят. Загляните в консоль браузера в хроме и FF: ctrl+shift+i. Там увидите ошибки.
Вот так должно работать. default не обязателен, по умолчанию будет 1000 рублей.
var currency = '1000 рублей';

switch (ymaps.geolocation.country) {
case 'Казахстан':
currency = '5000 тенге';
break;
case 'Беларусь':
currency = '1000 бел. рублей';
break;
}
document.querySelector('span.currency').innerHTML = currency;

Спасибо огромное, теперь все почти заработало. Почему-то только не получается выводить все теги span в одном div. Отображается только значение первого указанного span тега.

D
На сайте с 31.01.2017
Offline
15
#8
widgin:
Почему-то только не получается выводить все теги span в одном div. Отображается только значение первого указанного span тега.

Думаю из-за того, что теги незакрыты.

<span>...</span>

http://htmlbook.ru/html/span

W
На сайте с 14.11.2012
Offline
41
#9
demiux:
Думаю из-за того, что теги незакрыты.
<span>...</span>
http://htmlbook.ru/html/span

Да, точно :). Я уже сплю наполовину. Еще раз спасибо. Вы мне очень помогли.

W
На сайте с 14.11.2012
Offline
41
#10

И все-таки этот span со стоимостью <span class="currency"></span> отображается только первый указанный на странице. Все остальные не выводят содержимое. Помогите, пожалуйста, исправить проблему.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий