2013-04-12 117 views
0

我正在做一個小型的個人網絡投資組合,以學習網站開發。我列出了所有「買入」的股票,我想從雅虎財經實時更新價格。我已經可以進行價格更新了,但是我重寫了使用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返回從雅虎財經的所有股票信息作爲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文件,但我無法弄清楚問題所在。我甚至無法在price字段中輸出update.js中的Hello。

我想要做的是顯示我存儲在數據庫中的股票,然後使用ajax和javascript更新價格。任何幫助,將不勝感激。提前致謝。

+2

在你的html中沒有任何地方出現一個id爲'price'的元素,所以你的成功函數基本上什麼都不做。 –

回答

2

使用PHP的加上一個.getJSON JSON功能更新...以下是一些示例代碼:

// 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中顯示任何內容。我可以從update.php回顯json,但我不知道如何顯示js文件中的任何內容,以查看它是否從update.php獲取任何內容。 – tironci

+0

如果您有URL或某些示例代碼,我會很樂意採取看。 –

+0

我把3個文件放在pastebin中。請看一下。 http://pastebin.com/pi5w8BRi – tironci