如何从循环传递PHP变量并将其用作Javascript变量

时间:2018-10-03 19:05:56

标签: javascript php ajax

我有一个while循环,它将一些数据从mysql表显示到表中。每个表行都有一个按钮,用于通过ajax将数据发送到另一个php页面,该页面将数据插入到另一个表中。我的问题是我想通过获取特定行的ID来获取特定行的值,但是由于我不在循环中,所以我无法使用$ row变量...我该怎么做? >

这是代码的一部分:

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "<tr>";
        echo "<td>" . $row['TROUBLE_TICKET_NUM'] . "<input type=\"hidden\" name=\"billet".$row['TROUBLE_TICKET_NUM']."\" id=\"billet".$row['TROUBLE_TICKET_NUM']."\" value=\"".$row['TROUBLE_TICKET_NUM']."\"></td>";
        echo "<td>" . $row['CONCAT(Year(activites.ACTIVITY_CREATE_DTM),month(activites.ACTIVITY_CREATE_DTM))'] . "</td>";
        echo "<td>" . $row['CUSTOMER_NM'] . "</td>";
        echo "<td>" . $row['DEFAULT_WORK_GROUP_CD'] . "</td>";
        echo "<td>" . $row['ACTIVITY_OWNER_NM'] . "<input type=\"hidden\" name=\"id".$row['TROUBLE_TICKET_NUM']."\" id=\"id".$row['TROUBLE_TICKET_NUM']."\" value=\"".$row['ACTIVITY_OWNER_NM']."\"></td>";
        echo "<td>" . $row['groupe'] . "</td>";
        echo "<td>" . $row['Technicien'] . "<input type=\"hidden\" name=\"technicien".$row['TROUBLE_TICKET_NUM']."\" id=\"technicien".$row['TROUBLE_TICKET_NUM']."\" value=\"".$row['Technicien']."\"></td>";
        echo "<td>
                    <label for=\"date". $row['TROUBLE_TICKET_NUM'] ."\"><strong>Date:</strong></label>
                    <input type=\"text\" name=\"date". $row['TROUBLE_TICKET_NUM'] ."\" id=\"date". $row['TROUBLE_TICKET_NUM'] ."\" onClick=\"ds_sh(this);\" value=\"".date("Y-m-d")."\">&nbsp;
                    <label for=\"heure". $row['TROUBLE_TICKET_NUM'] ."\"><strong>Heure:</strong></label>
                    <input type=\"text\" class=\"timepicker\" name=\"heure". $row['TROUBLE_TICKET_NUM'] ."\" id=\"heure". $row['TROUBLE_TICKET_NUM'] ."\"></td>
                    <td><button type=\"button\" class=\"btn btn-success btn-block\" name=\"insert-data". $row['TROUBLE_TICKET_NUM'] ."\" id=\"insert-data". $row['TROUBLE_TICKET_NUM'] ."\" onclick=\"insertData()\">Ajouter suivi</button>
                              <br>
                            <p id=\"message\"></p>
                    </td>";
        echo "<tr>";
    }
} else {
    echo "<tr><td><div class=\"alert alert-dark\" role=\"alert\">Aucun r&eacute;sultat</div></td></tr>";
}

mysqli_close($conn);
?>
            </tbody>
        </table>
    </div>
<!-- Script pour envoi donnée via ajax -->
<script type="text/javascript">

$(document).ready(function(){
  $("#insert-data<?php echo $row['TROUBLE_TICKET_NUM']; ?>").click(function(){
    var billet=$("#billet<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();
    var technicien=$("#technicien<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();
    var id=$("#id<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();
    var date=$("#date<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();
    var heure=$("#heure<?php echo $row['TROUBLE_TICKET_NUM']; ?>").val();

// Debug
 console.log(billet, technicien, tid, date, heure);

// AJAX
        $.ajax({
            method: "POST",
            url: "insert-data.php",
            data: {billet:billet,technicien:technicien,id:id,date:date,heure:heure},
            dataType: "JSON",
            success: function(data) {
             $(".message").html(data);
            $("p").addClass("alert alert-success");
            },
            error: function(err) {
            alert(err);
            }
        });

});
});

  </script>

1 个答案:

答案 0 :(得分:-1)

如果您的目的是允许用户仅插入来自现有行的值,则不要将要插入的值传递给AJAX目标。否则,用户可以手动调用AJAX目标并仅提供他们想要的任何值。而是发送源行的ID,并更新AJAX目标以查找该行,然后从中复制值。

您可以通过将行ID放入每行的data属性中来做到这一点:

<tr data-id="<?= $row['id'] ?>">

然后使用一个jquery选择器,该选择器在单击按钮时触发,以获取被单击行的值。像这样:

$(this).parent().data('id')