按钮显示json文件的和值的结果

时间:2014-03-02 17:48:07

标签: javascript php jquery html html5

我需要帮助才能显示结果是json文件的值的总和,如下所示:

http://www.base.gov.pt/base2/rest/contratos?&sort(-publicationDate)

我在php中使用此代码来执行此操作:

                         (name of this file: estat.php)

<?php
    //include "sum.php";
    $x="active";
    $y='';

    if(isset($_GET['tabsoft'])){
        $y="active";
        $x="";
    }

?>
<html>
    <?php include 'cab.php'; ?>
    <body>
        <?php include 'menu.php'; ?>
        <div class="container">
            <div calss="row">
                <ul id="tabs" class="nav nav-tabs" data-tabs="tabs">
                    <li class="<?php echo $x ?>"><a href="#val" data-toggle="tab">Valor Total Gasto</a></li>
                    <li class="<?php echo $y ?>"><a href="#emp" data-toggle="tab">Número de Empresas Envolvidas</a></li>
                </ul>
                <div id="my-tab-content" class="tab-content">
                    <div class="tab-pane <?php echo $x ?>  " id="val">
                        <p>
                            <form>
                                <h2>Dinheiro gasto nos contratos</h2>
                                <input type="submit" name="soma" value="Somar Valores" class="btn btn-primary" formaction="action_sum.php"/>
                                <!-- <p><?php echo $total; ?></p> -->
                            </form>
                        </p>
                    </div>
                    <div class="tab-pane <?php echo $y ?>  " id="emp">

                    </div>
                </div>
            </div>
        </div>
        <?php include 'rodape.php';?>
    </body>
</html>

我需要从json文件中显示'initialContractualPrice'的总和值,为此我将此代码写入我命名为sum.php的其他文件中:

<?php

// Get json from url
$json = file_get_contents("file.json");
// Decode json into an array
//$json = json_decode($content, true);
$data =  json_decode($json, TRUE);

// Set default
global $total;

// Loop through the array created when decoding json
foreach ($data as $key) 
{
    // remove symbol from the end leaving only digits
    $value = substr(utf8_decode($key['initialContractualPrice']), 0, -1);
    // remove the decimal point
    $value = str_replace('.', '', $value);
    // replace the comma with a decimal point
    $value = str_replace(',', '.', $value);
    // add this number to the total value
    $total += $value;
}

//echo $total;

?>

我的问题是如何为页面执行总和而不重定向到sum.php但是执行并在estat.php中打印结果

如果更容易做到这一点,我可以将sum.php的类型更改为js或jquery。

非常感谢。

1 个答案:

答案 0 :(得分:0)

正如您所做的那样,将sum.php包含在文件estat.php的开头。用css隐藏总和值。

<input id="sum-btn" type="submit" name="soma" value="Somar Valores" class="btn btn-primary" formaction="action_sum.php"/>
<p id="sum"><?php echo $total; ?></p>

的CSS:

#sum {
    display:none;
}

并使用jQuery(当你标记它时)在你的按钮上放置一个点击处理程序:

<script>
$(document).ready(function() {
    $('#sum-btn').click(function() {
       $('#sum').show(); 
    });
});
</script>

FIDDLE DEMO

或者,如果您不想在加载页面时计算总和,则可以在单击按钮时使用AJAX call调用sum.php。

<script>
$(document).ready(function() {

    $('#sum-btn').click(function() {

        var request = $.ajax({
            url: "sum.php",
            type: "GET"
        });
        request.done(function( value ) {
            $('#sum').text( value );
            $('#sum').show(); 
        });
        request.fail(function( jqXHR, textStatus ) {
            alert( "Request failed: " + textStatus );
        });

    });
});
</script>

并在sum.php中,echo $total;结尾。