2013-04-12 2 views
0

Я занимаюсь небольшим персональным веб-портфолио, чтобы изучить веб-разработку. У меня есть список всех акций, которые я «купил», и я хотел бы обновить цену в реальном времени от yahoo finance. Я уже могу обновить цену, но я переопределяю таблицу, которую я показываю запасами с новой, которая вызывается с помощью javascript.Обновление цены акций с помощью ajax

Я знаю, что должен быть более чистый способ. Я пытаюсь обновить цену с помощью javascript, но я не думаю, что все делаю правильно.

Вот что у меня есть.

Portfolio.php отображает все запасы у меня есть

<?php foreach ($shares as $row): ?> 

     <tr > 
     <td><?php echo $row["symbol"];?></td> 
     <td><a href="funds.php" id="<?php echo $row["symbol"]?>"><?php echo $row["name"];?></a></td> 
     <td style="text-align: right;"><?php echo $row["shares"];?></td> 
     <td id="price" style="text-align: right;">$ <?php echo number_format($row["price"],2);?></td> 
     <td style="text-align: right;"><?php 
     $change = number_format($row["change"],2); 
     echo sprintf("%+1.2f", $change); 
     echo " ("; 
     echo $row["pct"]; 
     echo " )"; 
     ?></td> 
     <td style="text-align: right;">$ <?php echo $row["dayGain"];?></td>  
     <td style="text-align: right;">$ <?php echo number_format($row["total"],2);?></td> 
     </tr> 

<?php endforeach; ?> 

</table>  
<script type="text/javascript" src="../html/js/update.js" ></script> 

Тогда я update.php, которая возвращает всю информацию о фондовом от Yahoo финансов как JSON

<?php 
// configuration 
require("../includes/config.php"); 

//query user's portfolio 

$rows = query("SELECT * FROM shares WHERE id = ?", $_SESSION["id"]); 
$cash = query("SELECT cash FROM users WHERE id = ?", $_SESSION["id"]); 

    //create array to store the shares 
    $shares = array(); 

    //for each of the user info 
    foreach($rows as $row){ 

     $yql_base_url = "http://query.yahooapis.com/v1/public/yql"; 

     $yql_query = "select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22".$row['symbol']."%22)%0A%09%09"; 

     $env = "env=http%3A%2F%2Fdatatables.org%2Falltables.env"; 
     $yql_full_query = $yql_base_url . "?q=" . $yql_query . "&format=json&" . $env; 
     $session = curl_init($yql_full_query); 
     curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
     $json = curl_exec($session); 
     $stock = json_decode($json); 

     if($stock->query->results !== false){ 

      $shares [] = array(

       "symbol" => $stock->query->results->quote->symbol, 
       "price" => $stock->query->results->quote->LastTradePriceOnly 

      ); 

     } 

    } 
    $return = array("price" => $shares); 
    echo json_encode($return); 

?> 

И третий файл update.js, в котором я пытаюсь получить javascript

$(document).ready(function(){ 
function stock() { 
     $(function() { 
      $.getJSON('../update.php',function(result){ 
      $("div#price2").html(result.price); 

     }); 
    }); 
     stock(); 
     setInterval(stock(), 10000); 

    }); 
}); 

Если я перейду непосредственно к u pdate.php Я могу посмотреть цены как json. Я думаю, что проблема заключается в файле update.js, но я не могу понять, в чем проблема. Я даже не могу напечатать Hello из update.js в поле цены.

Что я пытаюсь сделать, это показать запасы, которые я сохранил в базе данных, а затем обновить цену с помощью ajax и javascript. Любая помощь будет оценена по достоинству. Заранее спасибо.

+2

Нигде в вашем html не появляется элемент с идентификатором 'price', поэтому ваша функция успеха в основном ничего не делает. –

ответ

2

JSON функции Используйте PHP в сочетании с .getJSON обновить его ... Вот пример кода:

// pull_stock_price.php 
<?php 
$return = array("content" => "New Stock Price: $2000"); 
json_encode($return); 
?> 

// Jquery to pull stock price once every 10 seconds: 
function stock() { 
    $(function() {$.getJSON("pull_stock_price.php",function(result){ 
    $("#StockPrice").html(result.content); 
}); 
}); 
stock(); 
setInterval(stock, 10000); 

// HTML! 
<td><div id="StockPrice"></div></td> 

Что это делает: Каждые 10 секунд браузер пользователя будет тянуть pull_stock_price.php и примет содержимое, предоставленное json и обновление. Вы можете вытащить pull_stock_price.php из базы данных, завивать или действительно где угодно и форматировать данные, как вы этого хотите.

+0

Я изменил свой код с вашими предложениями, но я все еще ничего не вижу в #price. Я могу повторить json из update.php, но я не знаю, как я могу отображать что-либо из файла js, чтобы узнать, получает ли он что-нибудь от update.php – tironci

+0

Если у вас есть URL-адрес или какой-то пример кода, я с радостью возьму смотреть. –

+0

Я положил 3 файла в pastebin. Взгляни, пожалуйста. http://pastebin.com/pi5w8BRi – tironci

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