2013-03-26 2 views
1

У меня есть таблица, показывающая цены на акции, но я бы хотел обновить цену акции автоматически на странице, не обновляя страницу. Я пробовал этоКак обновить ячейку таблицы с помощью javascript

$(document).ready(function(){ 
    var updater = setTimeout(function(){ 
     $('.table #price').load('index.php', 'update=true'); 
    },6); 
}); 

Это похоже на работу, но оно помещает всю таблицу в ячейку. Я просто хочу обновить ценовую ячейку. Любая помощь будет оценена по мере того, как я новичок в JavaScript. Я также размещаю другие файлы здесь.

Это portfolio.php

<table class="table table-hover center-table table-bordered"> 
     <tr> 
     <th>Symbol</th> 
     <th>Name</th> 
     <th>Shares</th> 
     <th>Price</th> 
     <th>Total</th> 
     </tr> 
<?php foreach ($shares as $row): ?> 

     <tr> 
     <td><?= $row["symbol"]?></td> 
     <td><?= $row["name"]?></td> 
     <td><?= $row["shares"]?></td> 
     <td id="price">$<?= number_format($row["price"],2)?></td> 
     <td>$<?= number_format($row["total"],2)?></td> 
     </tr> 

<? endforeach ?> 

<tr> 
    <td>CASH</td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td>$<?= number_format($cash[0]["cash"], 2)?></td> 

</tr> 

</table> 

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

это index.php

<?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 = []; 

    //for each of the user info 

    foreach($rows as $row){ 

     //lookup stock info 
     $stock = lookup($row["symbol"]); 
     if($stock !== false){ 

      $shares[] = [ 
       "name" => $stock["name"], 
       "price" => $stock["price"], 
       "shares" => $row["shares"], 
       "symbol" => $row["symbol"], 
       "total" => $row["shares"]*$stock["price"] 

      ]; 

     } 
    } 

// render portfolio 
render("portfolio.php", ["shares" => $shares,"cash" => $cash, "title" => "Portfolio"]); 
?> 
+1

Должен быть слепой, но где элемент с идентификатором 'цена'? – adeneo

+1

a) У вас не может быть несколько элементов с id = цена b) Вы должны называть отдельную страницу PHP-страницы только одной ячейкой Если вы вызываете тот же index.php, вся таблица будет отображаться внутри ячейки – Draykos

+0

О, теперь вы добавили идентификатор. Возвращает ли функция загрузки полную таблицу с сервера, или в чем проблема? – adeneo

ответ

1

Ваш Javascript поставит весь результат в index.php в клетке, которая не то, что вы хотите. Вы должны изменить свою страницу php, чтобы отображать только те данные, которые вы хотите отобразить в ячейке.

Нечто подобное необходимо сделать трюк (изменить его, как вам нужно):

// ...code to calculate $price... 
if (isset($_GET['update'])){ 
    echo $price; 
    exit(); 
} 

PS: Вы можете также использовать другую PHP страницу, чтобы вернуть $ цена, которая может быть лучше, чем вызов index.php каждый раз, когда вы хотите обновить цену в Jquery

+0

Я создал другой файл, чтобы отправить цену, но я получаю сообщение об ошибке '$ rows = query ("SELECT shares FROM shares WHERE id =?", $ _SESSION ["id"]); $ share = []; foreach ($ rows as $ row) { $ stock = поиск ($ row ["symbol"]); if ($ stock! == false) { $ share [] = [ "price" => $ stock ["price"]];}} render ("portfolio.php", ["share" => $ share]); это portfolio.php ' $ 'Ошибка, которую я получаю: Примечание: Неопределенная переменная: share – tironci

+0

Ну, это еще одна проблема, если ваша прецедентная проблема была решена одним из наших ответов, пожалуйста, отметьте ее как ответ, для вашей новой проблемы, отобразите больше своих кода и использовать что-то, чтобы сделать его более читаемым. – Marshall

1

вы можете попросить AJAX вернуть только значение определенного DIV

$(document).ready(function(){ 
    var updater = setTimeout(function(){ 
     $('.table #price').load('index.php #price', 'update=true'); 
    },6); 
}); 

Примечание: на приведенном выше коде я предположил, что у наш index.php с параметром update = true также будет иметь ту же страницу индекса с обновленной ценой