【问题标题】:Hide the tables until the response is sent隐藏表格,直到发送响应
【发布时间】:2022-01-05 08:50:13
【问题描述】:

我有一个问题,编写一个小脚本来跟踪 Internet 上的数据包。

它工作正常,问题是在客户端发送它的指南编号之前,表格已经显示(空)并且一旦放置指南,从 API 中提取的数据已经出现。

有没有一种方法,只要不按下发送按钮并且有响应,表格就不会被看到?

我希望它们仅在您已经有要显示的数据时出现。

网站的代码是这样的:

<body>
<div class="container">
    <div class="row">
    <div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
                    <div class="panel-body">
                        <div class="form-container">
                            <div id="messages"></div>
                            <form action="" method="post" enctype="multipart/form-data" accept-charset="UTF-8" id="form-app">
<fieldset class="row">

<!-- Heading -->
<div class="col-xs-12">
    <h3 class="legend">Rastreo de Paquetes</h3>
</div>


<!-- Select List -->
<div class="col-xs-12">
    <div class="form-group required-control">
        <label  class="control-label" for="carrier">Paquetería</label>
        <select id="carrier" name="carrier" data-alias=""  class="form-control" required  >
            <option value="UPS" >UPS</option>
            <option value="Redpack" >Redpack</option>
            <option value="Estafeta" >Estafeta</option>
            <option value="DHL" >DHL</option>
            <option value="99 Minutos" >99 Minutos</option>
            <option value="FedEx" >FedEx</option>
            <option value="iVoy" >iVoy</option>
        </select>
    </div>
</div>

<!-- Number -->
<div class="col-xs-12">
    <div class="form-group required-control">
        <label  class="control-label" for="number">Número de guía o ID de Envío</label>
        <input type="text" id="shipment" name="shipment" value="" data-alias="" data-integer-only="true"  class="form-control"  required>
    </div>
</div>

<!-- Button -->
<div class="col-xs-12">
     <div class="form-action">
        <button type="submit" id="button_1" name="button_1" class="btn btn-primary">Enviar</button>
    </div>
</div>
</fieldset>
<div class="" style="display:none"><label class="control-label" for="_email">Disculpe, pero deje este campo en blanco</label><input type="text" id="_email" class="form-control" name="_email"></div> </form>
<div id="respuesta"></div>

<?php

include_once "key.php";
$shipment_number=$_POST["shipment"];
$carrier=$_POST["carrier"];

$params = array(
  "api_key" => $API_KEY,
  "carrier" => $carrier,
  "shipment_number" => $shipment_number
);
$headers = array(
  "api_key=".$API_KEY
);
curl_setopt_array($ch = curl_init(), array(
  CURLOPT_URL => "https://envios.corporativomarva.mx/api/v1/trackings",
  CURLOPT_SSL_VERIFYPEER => 0,
  CURLOPT_POST => 1,
  CURLOPT_POSTFIELDS => http_build_query($params),
  CURLOPT_RETURNTRANSFER => 1
));
$response = curl_exec($ch);
curl_close($ch);

$respuesta = json_decode($response);
//Show the response on HTML format with tables
echo "<table border='1'>";
echo "<tr><td>Estado del Envío</td><td>".$respuesta->shipment_status."</td></tr>";
echo "<tr><td>Evento</td><td>".$respuesta->event_description."</td></tr>";
echo "<tr><td>Guía</td><td>".$respuesta->carrier_tracking_number."</td></tr>";
echo "<tr><td>ID de Envio</td><td>".$respuesta->enviaya_shipment_number."</td></tr>";
echo "<tr><td>Fecha de envio</td><td>".$respuesta->pickup_date."</td></tr>";

//Show checkpoints data in a table
echo "<tr><td colspan='2'><table border='1'>";
echo "<tr><td>Checkpoint</td><td>Fecha</td><td>Código</td><td>Descripción</td><td>Ciudad</td><td>Estado</td><td>País</td><td>Comentarios</td></tr>";
foreach($respuesta->checkpoints as $checkpoint){
  echo "<tr><td>".$checkpoint->description."</td><td>".$checkpoint->date."</td><td>".$checkpoint->code."</td><td>".$checkpoint->description."</td><td>".$checkpoint->city."</td><td>".$checkpoint->state."</td><td>".$checkpoint->country."</td><td>".$checkpoint->comments."</td></tr>";
}
echo "</table></td></tr>";
echo "</table>";
?>


                            
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>

以前我用一个单独的文件处理它,以便进行 api 查询,但它向我显示了一个只有表格的空白页面,它看起来非常难看,我希望它可以在客户放置他的指南的同一页面上看到仅在下面,这就是我想出的,只是我认为表格不会一直显示。

【问题讨论】:

  • 检查你的 POST 是否设置 .. 如果是 .. 建表:if ( isset( $_POST["carrier"] ) ){

标签: php html json api


【解决方案1】:

一个简单的if 语句来检查是否设置了 POST -- 然后构建你的表...:

<?php

if (isset($_POST["carrier"])) {


    include_once "key.php";
    $shipment_number = $_POST["shipment"];
    $carrier = $_POST["carrier"];

    $params = array(
        "api_key" => $API_KEY,
        "carrier" => $carrier,
        "shipment_number" => $shipment_number
    );
    $headers = array(
        "api_key=" . $API_KEY
    );
    curl_setopt_array($ch = curl_init(), array(
        CURLOPT_URL => "https://envios.corporativomarva.mx/api/v1/trackings",
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_POST => 1,
        CURLOPT_POSTFIELDS => http_build_query($params),
        CURLOPT_RETURNTRANSFER => 1
    ));
    $response = curl_exec($ch);
    curl_close($ch);

    $respuesta = json_decode($response);
    //Show the response on HTML format with tables
    echo "<table border='1'>";
    echo "<tr><td>Estado del Envío</td><td>" . $respuesta->shipment_status . "</td></tr>";
    echo "<tr><td>Evento</td><td>" . $respuesta->event_description . "</td></tr>";
    echo "<tr><td>Guía</td><td>" . $respuesta->carrier_tracking_number . "</td></tr>";
    echo "<tr><td>ID de Envio</td><td>" . $respuesta->enviaya_shipment_number . "</td></tr>";
    echo "<tr><td>Fecha de envio</td><td>" . $respuesta->pickup_date . "</td></tr>";

    //Show checkpoints data in a table
    echo "<tr><td colspan='2'><table border='1'>";
    echo "<tr><td>Checkpoint</td><td>Fecha</td><td>Código</td><td>Descripción</td><td>Ciudad</td><td>Estado</td><td>País</td><td>Comentarios</td></tr>";
    foreach ($respuesta->checkpoints as $checkpoint) {
        echo "<tr><td>" . $checkpoint->description . "</td><td>" . $checkpoint->date . "</td><td>" . $checkpoint->code . "</td><td>" . $checkpoint->description . "</td><td>" . $checkpoint->city . "</td><td>" . $checkpoint->state . "</td><td>" . $checkpoint->country . "</td><td>" . $checkpoint->comments . "</td></tr>";
    }
    echo "</table></td></tr>";

    echo "</table>";

}
?>

【讨论】:

  • 效果很好,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2021-10-06
  • 2019-01-02
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 2017-02-04
相关资源
最近更新 更多