2015-01-16 2 views
0

Я назначил две переменные, которые равны переменной PHP, которая может быть изменена в любое время. Я пытаюсь обновить div каждые 5 секунд; например, для обновления номера. Я предполагаю, что это не работает, потому что PHP не запускается снова после загрузки страницы. Каков наилучший способ обойти это? Я не против ссылки на другую страницу, если это необходимо. Вот мой код:Попытка обновить переменную JavaScript, назначенную переменной PHP

$(document).ready(function() { 
    var buyprice = <?php echo $coinTicker->price($coin2[1] , 'buy'); ?>; 
    var sellprice = <?php echo $coinTicker->price($coin2[1] , 'sell'); ?>; 
    $('#currentbuyprice').html(buyprice); 
    $('#currentsellprice').html(sellprice); 
    setInterval(function() { 
    var buyprice = <?php echo $coinTicker->price($coin2[1] , 'buy'); ?>; 
    var sellprice = <?php echo $coinTicker->price($coin2[1] , 'sell'); ?>; 
    $('#currentbuyprice').html(buyprice); 
    $('#currentsellprice').html(sellprice); 
    }, 5000); 
}); 
+4

Ищите AJAX. Помните, что Google - ваш друг. – Prusse

+1

AJAX –

+1

Да, используйте ajax для отправки запроса и получения ответа в json. –

ответ

0

Да, это не сработает, как вы знаете.

setInterval(function() { 
    var buyprice = <?php echo $coinTicker->price($coin2[1] , 'buy'); ?>; 
    var sellprice = <?php echo $coinTicker->price($coin2[1] , 'sell'); ?>; 
    $('#currentbuyprice').html(buyprice); 
    $('#currentsellprice').html(sellprice); 
    }, 5000); 

Это javascript + php. В браузере выполняется запуск javascript и php на сервере. Они работают в разное время и являются взаимоисключающими. Работа отдельно друг от друга.

Что вы хотите сделать (возможно), если вы пытаетесь обновить в реальном времени, - это использовать вызов ajax.
http://api.jquery.com/jquery.ajax/

Я нахожу документацию api полезной для справки, но плохой, например.

var jqXHR = $.ajax({ 
    url: "target.aspx", 
    type: "GET", 
    dataType: "html", 
}).done(function (data, status, jqXHR) { 
    $("#container").html(data); 
    alert("Promise success callback."); 
}).fail(function (jqXHR,status,err) { 
    alert("Promise error callback."); 
}).always(function() { 
    alert("Promise completion callback."); 
}) 

Это очень хороший пример. Google «jqXHR» для других рабочих примеров

0

Вы не можете обновить статические переменные PHP, поскольку PHP-скрипт получает запрос, работает и отвечает клиенту, поэтому сеанс закрывается. Это два способа справиться с этим.

Путь 1: Вам необходимо подключить свой PHP к базе данных. Таким образом, вы отправите запрос в PHP-файл, который обновляет номера в базе данных, поэтому значения будут сохранены, а также для следующего запроса.

Way2: Вы можете создавать сеансы PHP php.net link. Таким образом, вы сохраните свои значения временно в сеансе. Этот сеанс будет удален через некоторое время, и, возможно, это не так, что вам нужно. сеансы похожи на файлы cookie.

Оба способа работают через запрос AJAX. Поэтому вам нужна Javascript-функция, которая отправит ваш запрос на этот PHP-файл, который будет обновлять базу данных или сеанс. У вас также должна быть функция для получения этих значений из базы данных или сеанса.

0
$(document).ready(function() { 
    var buyprice = <?php echo $coinTicker->price($coin2[1] , 'buy'); ?>; 
    var sellprice = <?php echo $coinTicker->price($coin2[1] , 'sell'); ?>; 
    $('#currentbuyprice').html(buyprice); 
    $('#currentsellprice').html(sellprice); 

    setInterval(function() { 
     $.get('/get_prices.php', function(data) { 
      buyprice = data.buy; 
      sellprice = data.sell; 
      $('#currentbuyprice').html(buyprice); 
      $('#currentsellprice').html(sellprice); 
     }, "json"); 
    }, 5000); 
}); 

И в вашем внутреннем интерфейсе (/get_prices.php в этом примере, изменить его!)

<?php 
$buy = 1; 
$sell = 1; 
echo json_encode(array(
    'buy' => $buy, 
    'sell' => $sell, 
)); 
exit; 
0

Вы можете сделать простой запрос Ajax попасть в отдельный файл PHP, который возвращает данные как json:

setInterval(function() { 
    $.get('/prices.php', function(data){ 
     $('#currentbuyprice').html(data.buyprice); 
     $('#currentsellprice').html(data.sellprice); 
    }); 
}, 5000); 

цены.PHP:

//code that creates $cointTicker and $coin vars goes here 
header('Content-Type: application/json'); 
echo json_encode(
     [ 
      'buyprice' => $coinTicker->price($coin2[1] , 'buy'), 
      'sellprice' => $coinTicker->price($coin2[1] , 'sell') 
     ] 
    ); 
0

Используя тот же подход (делая опрос), вы можете сделать AJAX запрос

<!DOCTYPE html> 
<html> 
<head> 
    <title> 

    </title> 
    <meta charset="utf-8" /> 
    <meta name="description" content=""> 
    <meta name="keywords" content=""> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js" charset="UTF-8"></script> 
</head> 
<body> 
    <script> 


    function send(){ 
     $.ajax({ 
      url: "a.php/", 
      type: 'GET', 
      success: function(res) { 
       var myVars = JSON.parse(res); 
       console.log(myVars[0].buyprice); 
       $('#currentbuyprice').html(myVars[0].buyprice); 
       $('#currentsellprice').html(myVars[0].sellprice); 
      } 
     }); 
    } 
    setInterval(function(){ send() }, 3000); 
    </script> 

    currentsellprice: 
    <div id="currentbuyprice"> 

    </div> 
    currentsellprice: 
    <div id="currentsellprice"> 

    </div> 
</body> 

здесь минимальная часть сервера

<?php 
    $out = "["; 
    $out .= '{"buyprice":"'. time(). '",'; 
    $out .= '"sellprice":"'. time()/2 . '"}'; 
    $out .="]"; 
    echo $out; 
?> 

Вы можете найти много информации, связанной с этими темами (ajax и json) в Интернете.

Смежные вопросы