Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не могу получить данные с файла xml (https://javascript.ru/forum/jquery/80098-ne-mogu-poluchit-dannye-s-fajjla-xml.html)

Ulyana1992 28.04.2020 10:28

Не могу получить данные с файла xml
 
ДД! По аналогии кода, представленного тут, хотела сделать конвертер валют, но почему-то не работает ;(( Помогите пожалйуста разобраться в чем проблема. Файл рабочий. Спасибо!
<!DOCTYPE html>
<html>
<head>
<title>Currency</title>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
USD<input type='text' id='val1'>
KZT<input type='text' id='res' disabled><br>
KZT<input type='text' id='val2'>
USD<input type='text' id='res2' disabled><br>
<script>
   var course = 0;
   $.ajax({
      type: 'get',
      url: 'https://nationalbank.kz/rss/rates_all.xml',
      dataType: 'xml',
      success: function(response) {
           $(response).find("item").each(function(i,elem) {
              if($(elem).find('title').text() == 'USD') { 
                 course = +$(elem).find('description').text();
              }
        })
     }
});
$('input').on('keyup',function(){
    var value1, value2;
    value1 = parseFloat($('#val1').val()).toFixed(2);
    value2 = parseFloat($('#val2').val()).toFixed(2);
    
        //KZT to USD
        if(value2 <= 30000){
            $('#res2').val(value3 * 0.99 / course);
        }
        if(value2 >= 100000){
            $('#res2').val((value3 * 0.9) / course);
        }
        if(value2 >= 1600){
            $('#res2').val((value3 * 0.8) / course);
        }
          //USD to KZT
        if(value1 <= 100){
            $('#res').val(value1 * 0.99 * course);
        }
        if(value1 >= 1000){
            $('#res').val(value1 * 0.9 * course);
        }
        if(value1 >= 10000){
            $('#res').val(value1 * 0.8 * course);
        }
        
    });
</script>
</body>
</html>

voraa 28.04.2020 11:35

Там CORS ошибка возникает

Access to XMLHttpRequest at 'https://nationalbank.kz/rss/rates_all.xml' from origin 'http://*****' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Malleys 28.04.2020 20:30

Цитата:

Сообщение от Ulyana1992
Файл рабочий.

И в чём выражается его работоспособность? На строках №№ 33, 36 и 39 используется необъявленная переменная value3, а значит перевод в талеры не работает. В вашей мошеннической схеме (строки №№ 32–50) забыты переводы начиная с $ 100 и до $ 1000 и в условии на строке №38 от ₸ 1600 до ₸ 30000 не обрабатываются из-за условия выше.

Если вам нужен конвертер валют из тенге в доллары и обратно без манипуляции сознанием и кошельком, то можно переделать ваш код так...
<!DOCTYPE html>
<html>
<head>
	<title>Currency</title>
</head>
<body>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
	USD<input type="number" id="val1">
	KZT<input type="number" id="res" disabled><br>
	KZT<input type="number" id="val2">
	USD<input type="number" id="res2" disabled><br>
	<script>
		$.ajax({
			type: "get",
			url: "https://cors-everywhere.glitch.me/https://nationalbank.kz/rss/rates_all.xml",
			dataType: "xml",
			success: function(xml) {
				rate = xml.evaluate("//item[title = 'USD']/description", xml, null, XPathResult.NUMBER_TYPE).numberValue;
			}
		});
		
		var rate = 0;

		$("input").on("input", function() {
			var value1 = parseFloat($("#val1").val());
			var value2 = parseFloat($("#val2").val());

			$("#res").val(value1 * rate);
			$("#res2").val(value2 / rate);
		});
	</script>
</body>
</html>

Ulyana1992 29.04.2020 04:11

spasibo koliuchka
 
Да, мой код намного больше, поэтому много версий было, проект большой, запуталась какую часть отправила, и да я говорила что исходный код не мой. И с этим фаилом по такой аналогии не работалось, и да мне нужны были манипуляции. Вы очень помогли, спасибо большущее!


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