Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2015, 11:01
Новичок на форуме
Отправить личное сообщение для plazma50 Посмотреть профиль Найти все сообщения от plazma50
 
Регистрация: 06.07.2015
Сообщений: 7

Вычисления с результатами getJSON запроса
Всем привет!
на getJSON запрос, сервер ответил в таком формате:
Код:
{
	"success" : true,
	"message" : "",
	"result" : {
		"Bid" : 2.05670368,
		"Ask" : 3.35579531,
		"Last" : 3.35579531
	}
}
Мне нужно разобрать "Bid", "Ask", "Last" по разным <div>, но предварительно выполнив простое математическое действие. Например умножить результат на 10. Делаю так:
<script>      
 $.getJSON('4.php', function(data){ <!-- в файле 4.php собственно запрос к серверу-->
  var items = [];
   $.each(data, function(key, val){
     $.each(val, function (key1, val1) {
    items.push(val1);        
 
            if ( key1 == "Bid" ) {
          return $("#Bid")
                 .css("background","yellow")
                 .html(val1);
              }
  
           if ( key1 == "Ask" ) {
          return $("#Ask")
                 .css("background","Red")
                 .html(val1); 
              }
        
             if ( key1 == "Last" ) {
          return $("#Last")
                 .css("background","Green")
                 .html(val1); 
        }    
   });
 });
});

</script>

В результате все нормально показывается в разных <div>, но как сделать вычисления перед тем как показать результат в <div>?
Пытаюсь вставить такой код:
var x = val1; 
    var y = x * 10;
 document.getElementById("demo").innerHTML = y;

но что-то не правильно, выдает только 3-й результат "Last" и то в div "demo", независимо от того куда вставляю этот код. а нужно для всех трех значений немножко разные вычисления.
Как правильно сделать? Любая помощь - спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2015, 11:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,253

Сообщение от plazma50
как сделать вычисления перед тем как показать результат в <div>?
У тебя нужное значение находится в val1, делай с ним любые вычисления...
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2015, 11:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

plazma50,
ksa, вас как-то понимает ... а можно увидеть результат который вы хотите получить -- html что было и что стало после обработки JSON?
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2015, 12:13
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Жикверя кагбе для внесения ясности и понятности была задумана, но практики доказали что если надо все запутать нахрен - никакая жикверь не помешает.
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2015, 12:15
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Например зачем две итерации ответа, если вам заранее известно в какой переменной находится действующее вещество? Затем откуда вообще могут взяться проблема что-то поменять в этом веществе до рендера? Да быть такого не может - скажет любой программист. А ТС - смог.
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2015, 13:38
Новичок на форуме
Отправить личное сообщение для plazma50 Посмотреть профиль Найти все сообщения от plazma50
 
Регистрация: 06.07.2015
Сообщений: 7

Сообщение от ksa Посмотреть сообщение
У тебя нужное значение находится в val1, делай с ним любые вычисления...
Спасибо! Я это понимаю, но val1 получаемое сразу после getJSON содержит все три числа в таком виде: 2.05670368,3.35579531,3.35579531 и используя if мне удается разнести их по разным <div>. Что нужно вставить после
if ( key1 == "Bid" ) {
	      return $("#Bid")
	      .css("background","yellow")
	      .html(val1);
	       }

или внутрь чтобы сначала сделать вычисление а уж потом в <div id = Bid> вставить результат? Код который я писал для раcчета через var упрямо дает мне val1 от третьего значения а не от первого... почему? не туда вставляю?

Сообщение от рони Посмотреть сообщение
... а можно увидеть результат который вы хотите получить -- html...
Спасибо за участие! Результат html это три числа в разных div но не 2.05670368 а 20,56 (т.е. уже умноженный на 10) и т.д.

Сообщение от kostyanet Посмотреть сообщение
....
Спасибо! Очень важные замечания...
Ответить с цитированием
  #7 (permalink)  
Старый 06.07.2015, 13:49
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,253

Сообщение от plazma50
но val1 получаемое сразу после getJSON содержит все три числа в таком виде: 2.05670368,3.35579531,3.35579531
Это не так.
Сообщение от plazma50
Код который я писал для раcчета через var упрямо дает мне val1 от третьего значения а не от первого... почему?
Потому как это последнее значение цыкла.
Сообщение от plazma50
не туда вставляю?
Просто в одно и то же место суешь...
Ответить с цитированием
  #8 (permalink)  
Старый 06.07.2015, 13:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,253

Сообщение от plazma50
Результат html это три числа в разных div но не 2.05670368 а 20,56 (т.е. уже умноженный на 10)
Как вариант...

$.getJSON('4.php', function(data){ 
	<!-- в файле 4.php собственно запрос к серверу-->
	var items = [];
	$.each(data, function(key, val){
		var clr={
			Bid: "yellow",
			Ask: "Red",
			Last: "Green"
		};
		$.each(val, function (key1, val1) {
			items.push(val1);        
			return $("#"+key1).css("background",clr[key1]).html(val1*10);
		});
	});
});
Ответить с цитированием
  #9 (permalink)  
Старый 06.07.2015, 14:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

ksa,
зачем 2 цикла и зачем return ?
Ответить с цитированием
  #10 (permalink)  
Старый 06.07.2015, 14:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

plazma50,

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
 $(function() {
    function fn(a) {
        var c = {
            Bid: "yellow",
            Ask: "Red",
            Last: "Green"
        };
        a = a.result;
        Object.keys(a).forEach(function(b) {
            $("#" + b).css("background", c[b]).html(10 * a[b])
        })
    }
   var data = {
        success: !0,
        message: "",
        result: {
            Bid: 2.05670368,
            Ask: 3.35579531,
            Last: 3.35579531
        }
    }
   fn(data)
});
  </script>
</head>

<body>
<div id="Bid"></div>
<div id="Ask"></div>
<div id="Last"></div>
</body>

</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить значение текст.поля с помощью аякс запроса espltd Элементы интерфейса 1 26.06.2015 13:02
Как приостановить выполнение скрипта до получения результата AJAX запроса? Хиросим AJAX и COMET 9 31.10.2011 10:56
Проблема при передаче запроса POST martinss AJAX и COMET 7 09.04.2011 23:35
Проблема с событиями после ajax запроса Mirgorod AJAX и COMET 5 12.06.2010 18:24
отмена запроса HelpeR AJAX и COMET 5 16.02.2010 16:24