Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 22.11.2015, 17:28
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Becass,
вот меня интересует эта строка p=$(this).find("Value").text(); что такое p?
Ответить с цитированием
  #12 (permalink)  
Старый 22.11.2015, 17:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Becass
Cкрипт для расчета стоимости заказа для типографии, все расчеты идут в Евро.
Да хоть в тугриках, почему для этого нужно постоянно обращаться к ЦБ? Центробанк устанавливает курс валют раз в сутки, а именно по окончанию торгов на Валютной бирже, то есть в течение дня курс не меняется, и ваши запросы к нему, это пустое занятие, как и xml для клиента. Курс нужно получать задачей для планировщика задач cron, раз в сутки и сохранять в своей базе, из которой получать уже готовое. Причем сейчас получить курс можно и более удобным способом - SOAP.
Ну а насчет евро, то по законодательству нашей страны все должно быть в нашей валюте, иное, это нарушение Закона.
Ответить с цитированием
  #13 (permalink)  
Старый 22.11.2015, 17:35
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Becass,
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>

    <div id="tcena">123</div>
    <p id="res"></p>
    <p id="res2"></p>
    <script>


        $(document).ready(function () {
            $.ajax({
                type: "GET",
                async : false,
                url: "cb.xml",
                dataType: "xml",
                success: XmlKurs
            });
            function XmlKurs (xml) {
                $(xml).find("Valute").each(function(){
                     var atr ='R01239';
                    if(atr =='R01239') {
                        var price=$(this).find("Value").text().replace(/,/,'.');
                        console.log(price);
                        $("#res").append(document.getElementById('tcena').value()*price);

                    }
                });
            }
        });


        var Euro = new function () {
            $(document).ready(function () {
                $.ajax({
                    type: "GET",
                    async : false,
                    url: "cb.xml",
                    dataType: "xml",
                    success: XmlKurs
                });
                function XmlKurs (xml) {
                    $(xml).find("Valute").each(function(){
                        if($(this).attr('ID')=='R01239') {
                            var price=$(this).find("Value").text().replace(/,/,'.');
                            $("res2").append(document.getElementById('Euro').value()*price);
                        }
                    });
                }
            });

        };



    </script>



</body>
</html>
Ответить с цитированием
  #14 (permalink)  
Старый 22.11.2015, 17:40
Интересующийся
Отправить личное сообщение для Becass Посмотреть профиль Найти все сообщения от Becass
 
Регистрация: 22.11.2015
Сообщений: 19

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD><TITLE>Листовки, буклеты, флаеры, плакаты,визитки и др. листовая продукция.</TITLE>
	<META http-equiv=Content-Type content="text/html; charset=windows-1251">




</head>
<body>
<div id="tcena">123</div>

<p id="res"></p>

<p id="res2"></p>





<script src="http://code.jquery.com/jquery-latest.js";></script>
	<SCRIPT>
    $(document).ready(function () {
            $.ajax({
                type: "GET",
                async : false,
                url: "cb.xml",
                dataType: "xml",
                success: XmlKurs
            });
            function XmlKurs (xml) {
                $(xml).find("Valute").each(function(){
                     var atr ='R01239';
                    if(atr =='R01239') {
                        var price=$(this).find("Value").text().replace(/,/,'.');
                        console.log(price);
                        $("#res").append(document.getElementById('tcena').value()*price);

                    }
                });
            }
        });


function calc1() {

		 var Euro = new function () {
            $(document).ready(function () {
                $.ajax({
                    type: "GET",
                    async : false,
                    url: "cb.xml",
                    dataType: "xml",
                    success: XmlKurs
                });
                function XmlKurs (xml) {
                    $(xml).find("Valute").each(function(){
                        if($(this).attr('ID')=='R01239') {
                            var price=$(this).find("Value").text().replace(/,/,'.');
                            $("res2").append(document.getElementById('Euro').value()*price);
                        }
                    });
                }
            });

        };


		var Li = new Number(list.Li.value);

		var Si = new Number(list.Si.value);

		var Ti = new Number(list.Ti.value);

		var Cf = new Number(list.Cf.value);

		var Cb = new Number(list.Cb.value);

		var F = new Number(list.F.checked);

		var B = new Number(list.B.checked);

		var Pf = new Number(list.Pf.checked);

		var N = new Number(list.N.checked);

		var V = new Number(list.V.checked);

		var Lg = new Number(list.Lg.checked);

		var Lm = new Number(list.Lm.checked);



		if (Li.toString() ==  "NaN" || Li <= 0) {

			alert('Введено неверное значение формата!');

			list.Li.focus();

			return false;

		}

		if (Si.toString() ==  "NaN" || Si <= 0) {

			alert('Введено неверное значение формата!');

			list.Si.focus();

			return false;

		}

		if ( (Li < 20 || Li > 430) || (Si < 20 || Si > 430) ) {

			alert('Формат задается в пределах от 20 до 430!');

			return false;

		}

		if (Ti.toString() ==  "NaN" || Ti <= 0) {

			alert('Введено неверное значение тиража!');

			list.Ti.focus();

			return false;

		}

		else {

			Nil1 = Math.floor(438/ (Li + 1) );

			Nis1 = Math.floor(306/ (Si + 1) );

			Ni1 = Nil1 * Nis1;

			Nil2 = Math.floor(438/ (Si + 1) );

			Nis2 = Math.floor(306/ (Li + 1) );

			Ni2 = Nil2*Nis2;

			Ni = Math.max(Ni1,Ni2);

			Na3 = Ti / Ni;

			Rb = list.RbK.value.substring(0, list.RbK.value.indexOf('_'));

			K = list.RbK.value.substring(list.RbK.value.indexOf('_')+1);

			Phs = Math.floor(0.999+(Na3*Rb/70));

			if ( Ni1 > Ni2 ) {

			Prz=(6+(Nil1-1)+(Nis1-1))*0.37*Phs;

			}

			else {

			Prz=(6+(Nil2-1)+(Nis2-1))*0.37*Phs;

			}

			Pbum=(0.6 * Rb * K *( Na3 + 100))/4;

			if (!(Cf-Cb)  && ((Li<310 && Si<=240) || (Li<=310 && Si<240) || (Si<310 && Li<=240) || (Si<=310 && Li<240))) {

				Pl =  1.5*(Cf+Cb);

				Ppec = 2*(Cf+Cb)+(Cf+Cb)*(10.0+0.0033*Na3);

			}

			else {

				Pl = 3*(Cf+Cb);

				Ppec = 2*(Cf+Cb)+(Cf+Cb)*(20+0.0033*Na3);

			}

			//alert(Ppec);

						Potd = Pl + F*(0.0022*Ti+500) + B * (20 + Na3 * 0.01) + Pf * Na3 * 0.01 +  V*(Na3 * 0.05)+N*(30+Ti*0.003) + Lg * Na3 * 0.25 + Lm * Na3 * 0.5 + Prz;

			//Общая стоимость тиража

			S = (Pbum + Ppec + Potd)*res2;
			console.log(Pbum, Ppec, Potd, Euro);

			S1 = S / list.Ti.value;

			S = S.toString().substring(0,S.toString().indexOf(".")+3);

			S1 = S1.toString().substring(0,S1.toString().indexOf(".")+3);

			list.result.value = "Общая стоимость тиража = " + S + " руб.\nСтоимость 1 экземпляра = " + S1 + " руб.";

			return true;

		}

	}

function format(dx,dy){

		document.list.Si.value = dx;

		document.list.Li.value = dy;

			}

</SCRIPT>


Эффекта не дало, формула не получает число.

http://joxi.ru/RmzkaQJf6Nzj2O

Последний раз редактировалось Becass, 22.11.2015 в 17:47.
Ответить с цитированием
  #15 (permalink)  
Старый 22.11.2015, 17:47
Интересующийся
Отправить личное сообщение для Becass Посмотреть профиль Найти все сообщения от Becass
 
Регистрация: 22.11.2015
Сообщений: 19

Сообщение от laimas Посмотреть сообщение
Да хоть в тугриках, почему для этого нужно постоянно обращаться к ЦБ? Центробанк устанавливает курс валют раз в сутки, а именно по окончанию торгов на Валютной бирже, то есть в течение дня курс не меняется, и ваши запросы к нему, это пустое занятие, как и xml для клиента. Курс нужно получать задачей для планировщика задач cron, раз в сутки и сохранять в своей базе, из которой получать уже готовое. Причем сейчас получить курс можно и более удобным способом - SOAP.
Ну а насчет евро, то по законодательству нашей страны все должно быть в нашей валюте, иное, это нарушение Закона.
Расчет с клиентом идет в рублях. Но закупка бумаги происходит в евро у иностранных поставщиков. И тема совсем не об этом.
Скрипт получения курса стоит на CRON, данные о валюте получает XML файл, а из него уже выводится в JS
Ответить с цитированием
  #16 (permalink)  
Старый 22.11.2015, 17:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Becass
И тема совсем не об этом
Я об этом и пишу - вы занимаетесь, мягко говоря, херней, и вам такую же херню и далее подосовывают. Это должна быть задача для cron на 00:00 час по Москве:

$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl"); 
$curs = $client->GetCursOnDate(["On_date"=>date('Y-m-d', strtotime('now -1 day'))]);
$rate = new SimpleXMLElement($curs->GetCursOnDateResult->any);
$result = $rate->xpath('ValuteData/ValuteCursOnDate[VchCode="EUR"]');
//сохраняем у себя на сутки, что и возвращаем клиенту при запросах
$eur = (float)$result[0]->Vcurs/(int)$result[0]->Vnom;


И не заставляйте клиент обрабатывает ненужное.
Ответить с цитированием
  #17 (permalink)  
Старый 22.11.2015, 17:57
Интересующийся
Отправить личное сообщение для Becass Посмотреть профиль Найти все сообщения от Becass
 
Регистрация: 22.11.2015
Сообщений: 19

Сообщение от laimas Посмотреть сообщение
Я об этом и пишу - вы занимаетесь, мягко говоря, херней, и вам такую же херню и далее подосовывают. Это должна быть задача для cron на 00:00 час по Москве:

$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl"); 
$curs = $client->GetCursOnDate(["On_date"=>date('Y-m-d', strtotime('now -1 day'))]);
$rate = new SimpleXMLElement($curs->GetCursOnDateResult->any);
$result = $rate->xpath('ValuteData/ValuteCursOnDate[VchCode="EUR"]');
//сохраняем у себя на сутки, что и возвращаем клиенту при запросах
$eur = (float)$result[0]->Vcurs/(int)$result[0]->Vnom;


И не заставляйте клиент обрабатывает ненужное.
У меня есть скрипт php, который получает данные с ЦБ раз в сутки
<?php
$today = date("d/m/Y");
 $fp = fopen('cb.xml', 'w');
 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL,
      'http://www.cbr.ru/scripts/XML_daily.asp?date_req='.$today);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
fclose($fp);
curl_close ($ch);
?>

Данные сохраняются в XML файл. И уже из XML файла мне надо получить число которое будет вставляться в формулу
$(document).ready(function () {
 $.ajax({
 type: "GET",
 async : false,
 url: "cb.xml",
 dataType: "xml",
 success: XmlKurs
 });
function XmlKurs (xml) {
$(xml).find("Valute").each(function(){
if($(this).attr('ID')=='R01239') {
d=$(this).find("Value").text();
$("p").append(document.getElementById('Euro').value()*$(this).find("Value"));
 }
 });
}
 });

что бы это число не менять каждый день в ручную
Ответить с цитированием
  #18 (permalink)  
Старый 22.11.2015, 18:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Нахрена вам cURL, и нахрена вам XML, который еще вынужден получать клиент и парсить, если нужна всего одна валюта?
Я не понимаю, какой смысл пыхтеть над тем, что совсем не нужно? Ну неужто не видно сразу, что вы вместо того чтобы единожды, пусть и устаревшим способом получая курс, получить нужное, заставляете клиента заниматься этим постоянно?
Ответить с цитированием
  #19 (permalink)  
Старый 22.11.2015, 18:04
Интересующийся
Отправить личное сообщение для Becass Посмотреть профиль Найти все сообщения от Becass
 
Регистрация: 22.11.2015
Сообщений: 19

Сообщение от laimas Посмотреть сообщение
Нахрена вам cURL, и нахрена вам XML, который еще вынужден получать клиент и парсить, если нужна всего одна валюта?
Я не понимаю, какой смысл пыхтеть над тем, что совсем не нужно? Ну неужто не видно сразу, что вы вместо того чтобы единожды, пусть и устаревшим способом получая курс, получить нужное, заставляете клиента заниматься этим постоянно?
Я запутался. Можете предложить Ваше решение в виде кода ?
Ответить с цитированием
  #20 (permalink)  
Старый 22.11.2015, 18:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А слабо запустить код мной показанный и увидеть что возвращается курс нужной валюты? Используйте полученное значение, какая проблема? Тоже самое (коли и у вас планировщиком раз в сутки получение курса) вы могли бы получить из xml курс евро, а при запросах клиента возвращать его, или же сразу в виде переменной в подключаемый JS поместить, или...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
посылка переменной kent0026 jQuery 5 04.01.2014 17:34
Как значение переменной вставить в имя переменной? jsgogo Общие вопросы Javascript 3 02.06.2013 12:11
вставка переменной в функцию аяксом dmitro AJAX и COMET 9 15.03.2012 10:40
Вставка переменной в фильтр nikolayseo Общие вопросы Javascript 5 04.02.2012 20:53
Вставка переменной в animate() Freakmeister jQuery 1 06.04.2011 21:45