Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как внести изменение в строке ссылки Get запроса? (https://javascript.ru/forum/misc/79053-kak-vnesti-izmenenie-v-stroke-ssylki-get-zaprosa.html)

Ketlller 11.12.2019 06:42

Как внести изменение в строке ссылки Get запроса?
 
Ребята помогите реализовать очередную затею. В инете не нашел примеров(((

В коде main.js прописанная ссылка, через нее получаю Get запрос данных по API.
Как внести изменения в строке ссылки, чтобы запрос шел по новой ссылке уже?


https://btc-alpha.com/api/v1/orderbook/ETH_USDT/

Надо менять это "ETH" или "ETH_USDT"

Тоесть пишу в окошке (или выбираю со списка огромного) нужную монету - кликаю "Применить" и оно прогружает данные по новой ссылке уже.

Спасибо.

ksa 11.12.2019 07:46

Цитата:

Сообщение от Ketlller
https://www.livecoin.net/ru/trading/ETH_USD
Надо менять это "ETH" или "ETH_USD"

Как вариант...

var url='https://www.livecoin.net/ru/trading/ETH_USD';
url=url.replace(/[^\/]*$/,'new_type');
alert(url);

Ketlller 11.12.2019 09:00

https://codepen.io/vitalij-kotlqr/pen/bGNpREW

Если так ввожу то норм, а через форму ввода то немогу текст передать в JS. Исправь пожалуйста ошибку в передачи текста :help:
А еще обьясни ПОЖАЛУЙСТА как составлят этот код если там другая будет ссылка например эта targetUrl_PZM_USD = 'https://btc-alpha.com/api/v1/orderbook/ETH_USD/';

или эта

targetUrl_PZM_USD_Livecoin = 'https://api.livecoin.net/exchange/order_book?currencyPair=ETH/USD';

Ketlller 11.12.2019 09:33

Цитата:

Сообщение от ksa (Сообщение 517289)
Как вариант...

var url='https://www.livecoin.net/ru/trading/ETH_USD';
url=url.replace(/[^\/]*$/,'new_type');
alert(url);

Тут (/[^\/]*$/,'new_type'); получается после последнее знака / вставляет наш 'new_type'
Это понял).
А если вставка нужна в средине ссылки!! Как быть?

И как передать текст в js ...вместо 'new_type' вставить.:help:

ksa 11.12.2019 10:09

Цитата:

Сообщение от Ketlller
А если вставка нужна в средине ссылки!! Как быть?

Для ответа на твой вопрос нужно знать какие задачи вообще ты собираешься решать...
До этого тебе нужно было менять что-то в конце строки... Потом появилось еще два варианта строк для замены...
Теперь нужно что-то менять вообще в какой-то середине... :blink:

Возможно для каждого варианта замены тебе придется использовать разные варианты замен.

ksa 11.12.2019 10:11

Цитата:

Сообщение от Ketlller
как составлят этот код если там другая будет ссылка например эта
targetUrl_PZM_USD = 'https://btc-alpha.com/api/v1/orderbook/ETH_USD/';

Как вариант...
var url = 'https://btc-alpha.com/api/v1/orderbook/ETH_USD/';
url=url.replace(/[^\/]+(?=\/$)/,'new_type');
alert(url);

ksa 11.12.2019 10:14

Цитата:

Сообщение от Ketlller
или эта
targetUrl_PZM_USD_Livecoin = 'https://api.livecoin.net/exchange/order_book?currencyPair=ETH/USD';

Как вариант...
var url = 'https://api.livecoin.net/exchange/order_book?currencyPair=ETH/USD';
url=url.replace(/=[^=]+/,'=new/type');
alert(url);

Ketlller 11.12.2019 10:35

Цитата:

Сообщение от ksa (Сообщение 517296)
Как вариант...
var url = 'https://api.livecoin.net/exchange/order_book?currencyPair=ETH/USD';
url=url.replace(/=[^=]+/,'=new/type');
alert(url);

Спасибо за ответ.

Можно еще пример для этой ссылки на будущее, тут нужно в средине замену сделать именно только BTC_ETH .

https://poloniex.com/public?command=...ET H&depth=10

Ketlller 11.12.2019 10:41

[B]html[/B]

<p>Введите пару торгову : <input type="text" id="new_type" value="ETH_USD"> </p>

[B]js[/B]

var new_type= $('#new_type');

targetUrl = 'https://btc-alpha.com/api/v1/orderbook/BTC_USD/';
    targetUrl=targetUrl.replace(/[^\/]+(?=\/$)/,'new_type');




как передать со страницы new_type в ссылку чтоб заменить BTC_USD на new_type ?

где там ошибка допущена?(

ksa 11.12.2019 12:24

Цитата:

Сообщение от Ketlller (Сообщение 517299)
Спасибо за ответ.

Можно еще пример для этой ссылки на будущее, тут нужно в средине замену сделать именно только BTC_ETH .

https://poloniex.com/public?command=returnOrderBook&currencyPair=BTC_ETH&depth=10

Как вариант...
var url = 'https://poloniex.com/public?command=returnOrderBook&currencyPair=BTC_ETH&depth=10';
url=url.replace(/((\?|&)currencyPair=)[^&]+/,'$1new_type');
alert(url);

Это кагбэ универсальный вариант замены значения параметра currencyPair на что-то другое.

ksa 11.12.2019 12:29

Цитата:

Сообщение от Ketlller (Сообщение 517300)
<p>Введите пару торгову : <input type="text" id="new_type" value="ETH_USD"> </p>

var new_type= $('#new_type');
targetUrl = 'https://btc-alpha.com/api/v1/orderbook/BTC_USD/';
    targetUrl=targetUrl.replace(/[^\/]+(?=\/$)/,'new_type');

как передать со страницы new_type в ссылку чтоб заменить BTC_USD на new_type ?
где там ошибка допущена?(

Ошибка у тебя в полном не понимании программирования... :(
Для тебя нет разницы между строковой константой и именем переменной...
Так же нет понимания связи контента на странице со скриптом, который будет работать на той же странице. :cray:

Чтобы использовать значение поля, в котором, наверное, будет выполнен ввод данных, нужно знать в какой момент это значение нужно будет брать.
А из твоего примера это не понятно... :no:

ksa 11.12.2019 12:34

Предложу пока такой вариант... :write:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('#ok').click(function(){
		var val=$('#new_type').val();
		var url='https://btc-alpha.com/api/v1/orderbook/BTC_USD/';
		url=url.replace(/[^\/]+(?=\/$)/,val);
		alert(url);
	});
});
</script>
</head>
<body>
<p>Введите пару торгову : <input type="text" id="new_type" value="ETH_USD"></p>
<button id='ok'>Ok</button>
</body>
</html>

Ketlller 11.12.2019 12:45

Цитата:

Сообщение от ksa (Сообщение 517307)
Как вариант...
var url = 'https://poloniex.com/public?command=returnOrderBook&currencyPair=BTC_ETH&depth=10';
url=url.replace(/((\?|&)currencyPair=)[^&]+/,'$1new_type');
alert(url);

Это кагбэ универсальный вариант замены значения параметра currencyPair на что-то другое.



Благодарю. :thanks: :thanks:

Ketlller 11.12.2019 14:15

Цитата:

Сообщение от ksa (Сообщение 517312)
Предложу пока такой вариант... :write:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('#ok').click(function(){
		var val=$('#new_type').val();
		var url='https://btc-alpha.com/api/v1/orderbook/BTC_USD/';
		url=url.replace(/[^\/]+(?=\/$)/,val);
		alert(url);
	});
});
</script>
</head>
<body>
<p>Введите пару торгову : <input type="text" id="new_type" value="ETH_USD"></p>
<button id='ok'>Ok</button>
</body>
</html>


https://codepen.io/vitalij-kotlqr/pen/bGNpREW

О ВЕЛИКИЙ ГУРУ .... в окне алерта показыает изменение в ссылке, а в работе кода не рабоатет((.... что ж не так то там:help:

ksa 11.12.2019 15:05

Цитата:

Сообщение от Ketlller
что ж не так то там

У тебя там какая-то каша... :cray:

Вот есть у тебя поле... Там будет какое-то значение... Его можно записать руками... Вставить из буфера обмена... Отредактировать...

В какой момент его можно использовать?
Ты про это так и не написал. :(

Ketlller 11.12.2019 15:14

Цитата:

Сообщение от ksa (Сообщение 517323)
У тебя там какая-то каша... :cray:

Вот есть у тебя поле... Там будет какое-то значение... Его можно записать руками... Вставить из буфера обмена... Отредактировать...

В какой момент его можно использовать?
Ты про это так и не написал. :(

Пока это ETH/USD будет вручную вводится в поле .
Заходим на сайт, вводим нужную пару ETH/USD и тд , и кликаем на Получить курс. Нам отображает курс нужной выбраной пары)

Ketlller 11.12.2019 15:22

Вложений: 1
Цитата:

Сообщение от ksa (Сообщение 517323)
У тебя там какая-то каша... :cray:

Вот есть у тебя поле... Там будет какое-то значение... Его можно записать руками... Вставить из буфера обмена... Отредактировать...

В какой момент его можно использовать?
Ты про это так и не написал. :(

там всего лишь вашего кода 3 строки в js )) и 1 строка кнопка в html .... :agree:

ksa 11.12.2019 15:36

Цитата:

Сообщение от Ketlller
там всего лишь вашего кода 3 строки в js ))

Если в алгоритме переставить строки... Он запросто может перестать работать. ;)

ksa 11.12.2019 15:40

Цитата:

Сообщение от Ketlller
Заходим на сайт, вводим нужную пару ETH/USD и тд , и кликаем на Получить курс.

Как вариант...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('button').click(function(){
		var val=$('#new_type').val();
		var url='https://btc-alpha.com/api/v1/orderbook/BTC_USD/';
		url=url.replace(/[^\/]+(?=\/$)/,val);
		alert(url);
	});
});
</script>
</head>
<body>
<button class='button'>Получить курс</button>
<p>Введите пару торгову : <input type="text" id="new_type" value="ETH_USD"></p>
</body>
</html>

Ketlller 12.12.2019 01:39

Цитата:

Сообщение от ksa (Сообщение 517331)
Как вариант...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('button').click(function(){
		var val=$('#new_type').val();
		var url='https://btc-alpha.com/api/v1/orderbook/BTC_USD/';
		url=url.replace(/[^\/]+(?=\/$)/,val);
		alert(url);
	});
});
</script>
</head>
<body>
<button class='button'>Получить курс</button>
<p>Введите пару торгову : <input type="text" id="new_type" value="ETH_USD"></p>
</body>
</html>

В html скрипт работает ваш ). Но если вставить в js то не хочет(((.

Код HTML:

<p>Введите торгову пару: <input type="text" id="new_type" value="ETH_USD"></p>
 
 <button class='button'>Получить курс</button>

<div class="div"></span>
  <div class="sell"> buy BTC_USD: <span></span></div> 
 <div class="buy"> sell BTC_USD: <span></span></div> 
 
</div>


Код JS:

var btn = document.querySelector('button');
var div = document.querySelector('.div');
var divBuy = document.querySelector('.buy span');
var divSell = document.querySelector('.sell span');
 
var val=$('#new_type').val();

var url='https://btc-alpha.com/api/v1/orderbook/BTC_USD/';
		url=url.replace(/[^\/]+(?=\/$)/,val);
 
let proxyUrl='https://cors-anywhere.herokuapp.com/';
 
let resUrl = proxyUrl + url;
 
console.log()
 
  btn.addEventListener('click', () => {	
 
   fetch(resUrl)
   .then(res => {
      res.json().then(body => {
     
        divBuy.innerHTML = body.buy[0].price;
      divSell.innerHTML = body.sell[0].price;
     
        btcalpha = body.buy[0].price;
      
        
        console.log(body);
      });
  })
  .catch(err => console.log(err)); 
  
});





btn.addEventListener('click', () => { - по клику получаем курс.

Если у 9 строке, val заменить на 'XRP_USD' и удалить 6 строку, то курс обновится и покажет результат XRP_USD.
А при вводе в поле "Введите торгову пару:", не меняется ссылка( и не получаем результат курса.

Где ж все таки кроется ошибка?:help:

Код туточки: https://codepen.io/vitalij-kotlqr/pen/WNbxNVy

laimas 12.12.2019 05:52

Цитата:

Сообщение от Ketlller
А при вводе в поле "Введите торгову пару:", не меняется ссылка

А с чего бы она менялась, если ее изменение происходит один раз и до обработчика кнопки? Наверное же и введенное значение, и формирование url должно быть btn.addEventListener('click', () => { тут.
И уж если без всякого побочного document.querySelector, то не var val=$('#new_type').val();, а var val = document.querySelector("#new_type").value;

Ketlller 12.12.2019 11:22

Цитата:

Сообщение от laimas (Сообщение 517349)
А с чего бы она менялась, если ее изменение происходит один раз и до обработчика кнопки? Наверное же и введенное значение, и формирование url должно быть btn.addEventListener('click', () => { тут.
И уж если без всякого побочного document.querySelector, то не var val=$('#new_type').val();, а var val = document.querySelector("#new_type").value;

Спасибо большое за поправку ... заработала!:dance: :dance: :dance:

Ketlller 12.12.2019 12:40

Цитата:

Сообщение от ksa (Сообщение 517312)
Предложу пока такой вариант... :write:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('#ok').click(function(){
		var val=$('#new_type').val();
		var url='https://btc-alpha.com/api/v1/orderbook/BTC_USD/';
		url=url.replace(/[^\/]+(?=\/$)/,val);
		alert(url);
	});
});
</script>
</head>
<body>
<p>Введите пару торгову : <input type="text" id="new_type" value="ETH_USD"></p>
<button id='ok'>Ok</button>
</body>
</html>



Как правильно прописать в этой ссылке замену val, ошибку выдает блин(((

var url= 'https://api.hotbit.io/api/v1/order.book?market=ETH/USDT&side=2&offset=0&limit=1'; 
   url=url.replace(/((\?|?)market=)[^&]+/,val);

ksa 12.12.2019 12:56

Цитата:

Сообщение от Ketlller
Как правильно прописать в этой ссылке замену val

Выше уже писали...
Цитата:

Сообщение от laimas
И уж если без всякого побочного document.querySelector, то не
var val=$('#new_type').val();

а
var val = document.querySelector("#new_type").value;


Ketlller 12.12.2019 13:02

Цитата:

Сообщение от ksa (Сообщение 517362)
Выше уже писали...

Я имею ввиду регулярные выражения как правильно прописать (/((\?|?)market=)[^&]+/,val);
мне ж в место ETH/USDT надо прописывать val, чтоб замену произвести по клику
в этой ссылке

https://api.hotbit.io/api/v1/order.b...fset=0&limit=1

ksa 12.12.2019 14:16

Цитата:

Сообщение от Ketlller
Я имею ввиду регулярные выражения как правильно прописать

Как вариант...
var url= 'https://api.hotbit.io/api/v1/order.book?market=ETH/USDT&side=2&offset=0&limit=1';
var val='new_type';
url=url.replace(/([?&]market=)[^&]+/,'$1'+val);
alert(url);

Ketlller 12.12.2019 14:42

Цитата:

Сообщение от ksa (Сообщение 517370)
Как вариант...
var url= 'https://api.hotbit.io/api/v1/order.book?market=ETH/USDT&side=2&offset=0&limit=1';
var val='new_type';
url=url.replace(/([?&]market=)[^&]+/,'$1'+val);
alert(url);


Все по красоте теперичя. Спасибо):dance: :dance: :dance:


Часовой пояс GMT +3, время: 00:09.