javascript - 如何使用 jquery 将从服务器文件获取的 JSON 值填充到创建的 HTML 表单中?

标签 javascript php jquery ajax

仅供引用:我没有使用引导模态框来弹出窗口。

我的表格每行都有按钮,用于在弹出的模式框中显示详细信息。

我附上了 dashboard.htmlmodal.jsmodal.cssmodal.php 所需的部分代码.

我缺乏jquery的概念来将元素添加到表单并通过PHP分配返回的JSON文件的值,然后将表单添加到div标签类modal-content。弹出模式框的 CSS 在按钮单击时也不起作用。

此外,我想删除 class modal-content 中以前的 html 表单标签,因为每次新行单击都会弹出新表单,用户可以在其中编辑和更改行的值。

您可以通过查看下面的屏幕截图获得更清晰的图片。

enter image description here

enter image description here

文件dashboard.html,该文件有调用modal.js的按钮

<div class="row">
<div class="col span-4-of-4">                             

<div style="overflow-x:auto;">

<table class="display_table" id='main_lead_table' style="display: none;">

    <thead>                        
        <th>#</th>
        <th>Lead Id</th> 
        <th>Name</th>
        <th>Website</th>
        <th>Linkedin</th>
        <th>Lead Description</th>
        <th>Owner Notes</th>

        <?php

        if($_SESSION['Admin'] == '1'){

        ?>

        <th>Admin Notes</th>
        <th>Added By</th>

        <?php 

        }

        ?>

        <th>Last Contact Date</th>
        <th>Next Contact Date</th>
        <th>Lead Status</th> 
        <th>Details</th>

    </thead>

    <tbody id='leadTable'>                          

        <?php



        function getLeadAddedByName($id){

            include('./server/connection.php');

            $selectSQL = "SELECT UserName FROM `tbl_user_signup_info` WHERE User_Id = '$id' ";

            $result = $conn -> query ($selectSQL);

            $name = "";

            while($row = mysqli_fetch_array($result)){

            $name = $row['UserName'];

            }

            return $name;

        }

        include('./server/connection.php'); 

        $selectSQL = "SELECT * FROM `tbl_main_lead_info` ORDER BY Lead_Id";

        $result = $conn -> query ($selectSQL);

        $i = 1;

        while ($row = mysqli_fetch_array($result)) {                                

              printf( "<tr class='content'>
                            <td>%s</td>
                            <td>%s</td>

                            <td>%s</td> 
                            <td>%s</td>                                                         

                            <td>%s</td>
                            <td>%s</td>

                            <td>%s</td>
                            <td>%s</td>

                            <td>%s</td>                                                           
                            <td>%s</td>

                            <td>%s</td>
                            <td>%s</td>

                            <td><button id='%d' name='leadidclick' value='%d' > View </button></td>                                                                            
                        </tr>",

                        $i,
                        $row['Lead_Id'], 
                        $row['FirstName']." ".$row['LastName'],
                        $row['Website'],
                        $row['Linkedin'],
                        $row['LeadDescription'],
                        $row['OwnerNotes'],                                                       
                        $row['AdminNotes'],

                        getLeadAddedByName($row['LeadAddedBy'])."<br>Date/Time: ".$row['LeadAddedOn'],                                                                                           

                        date('d-m-Y', strtotime($row['LastContactDate'])),
                        date('d-m-Y', strtotime($row['NextContactDate'])),                                                          
                        $row['LeadStatus'],

                        $row['Lead_Id'],                                                                   
                        $row['Lead_Id'],

                        );

                        $i = $i+1;

                    }

        ?>                                       

    </tbody>

</table>
</div>
</div>
</div>

<div id="myModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close">&times;</span>

    <p>This is Modal Box</p>                                        

  </div>

</div> 

modal.js 文件将在每次单击新按钮时获取行 ID,并构建 HTML 表单,以便使用该 HTML 表单弹出模式框。

$(document).ready(function() {

    $('[name="leadidclick"]').click(function(e){

      e.preventDefault();
      // var leadid = $('[name="leadidclick"]').val();

      var leadid = $(this).val();

      alert("You clicked Leadid: " + leadid);

      $.ajax({

        type: "POST",
        url: './server/modal.php',
        data: {

          'leadid': leadid

        },        
        success: function(data){

           var result = $.parseJSON(data);
           console.log(result);

           console.log(result.length)
          //Modal Box to POP UP HERE

           $.each(result, function(key, value) {

                    $form = $("<form action='' method='POST'></form>").attr("id", value['Lead_Id']);


                   //This value assigning based on JSON Key value pair is also not working


                    $form.append('<label>Lead Id: </label><input type="text" name="leadid" ').attr("id", value['Lead_Id']);

                    $form.append('<label>Lead Name: </label><input type="text" name="leadname">').attr("value", value['FirstName']+" "+value['LastName']); 

                    $form.append('<label>Company: </label><input type="text" name="company" ').attr("value", value['Company']);


                    $form.append('<input type="button" value="button">'); 

                    i = i + 1;

                });


          $( ".modal-content" ).append( $form );

          //This change in CSS is not working

          $('#myModal').css("display", "show");         


        }

      });

    });

});

用于显示模态的文件modal.css

/* The Modal (background) */
.modal {
  display: none; /* Hidden by default */
  position: fixed; /* Stay in place */
  z-index: 1; /* Sit on top */
  left: 0;
  top: 0;
  width: 100%; /* Full width */
  height: 100%; /* Full height */
  overflow: auto; /* Enable scroll if needed */
  background-color: rgb(0,0,0); /* Fallback color */
  background-color: rgba(0,0,0,0.4); /* Black w/ opacity */

}

/* Modal Content/Box */
.modal-content {
  background-color: #fefefe;
  margin: 15% auto; /* 15% from the top and centered */
  padding: 20px;
  border: 1px solid #888;
  width: 80%; /* Could be more or less, depending on screen size */
}

/* The Close Button */
.close {
  color: #aaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: black;
  text-decoration: none;
  cursor: pointer;
}

@特鲁普蒂·巴拉德 我收到模式框弹出显示的控制台错误,并且我无法弹出模式框(我正在使用不带 Bootstrap 的模式框)。

modal.js:61 Uncaught TypeError: $(...).modal is not a function
    at Object.success (modal.js:61)
    at c (jquery-3.4.1.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-3.4.1.min.js:2)
    at l (jquery-3.4.1.min.js:2)
    at XMLHttpRequest.<anonymous> (jquery-3.4.1.min.js:2)

最佳答案

在文件中dashboard.html您必须在模型代码 ex 中给出 div。 <div id="formapp">

<div id="myModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close">&times;</span>

    <p>This is Modal Box</p>                                        
    <div id="formapp">
    </div>
  </div>

</div> 

在ajax中

 $.ajax({

        type: "POST",
        url: './server/modal.php',
        data: {

          'leadid': leadid

        },        
        success: function(data){

           var result = $.parseJSON(data);
           console.log(result);

           console.log(result.length)
          //Modal Box to POP UP HERE

            $('#formapp').empty(); // first empty division content 
            var form=''; //declare var
           $.each(result, function(key, value) {

                    form = $("<form action='' method='POST'></form>").attr("id", value['Lead_Id']);


                   //This value assigning based on JSON Key value pair is also not working


                    form.append('<label>Lead Id: </label><input type="text" name="leadid" value="'+value['Lead_Id']+'">');

                    form.append('<label>Lead Name: </label><input type="text" name="leadname" value="'+value['FirstName']+" "+value['LastName']+'">');

                    form.append('<label>Company: </label><input type="text" name="company" value="'+value['Company']+'">');


                    form.append('<input type="button" value="button">'); 

                    i = i + 1;

                });


          $( "#formapp" ).html( form );

          //This change in CSS is not working

          $('#myModal').show();         


        }

      });

或者不需要$.each()对于单个记录 只需使用 result[0]['Lead_Id']

还有$form被视为引用。在jquery中使用var声明变量

关于javascript - 如何使用 jquery 将从服务器文件获取的 JSON 值填充到创建的 HTML 表单中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59769166/

相关文章:

javascript - 如何在 SVG 上绘制与给定图像数据形状完全相同的折线对象

javascript - 如何通过 Angular 单选按钮启用或禁用提交按钮

php - TCPDF 将底部边距设置为零

php - 我可以检查 Magento PHTML 文件中的 HTTPS 吗?

jquery - 具有默认选项卡的 shown.bs.tab 事件不起作用

php - Laravel 5.6,制作多个页面注册并将输入数据保存到 session

javascript - 创建在线测验和警报

javascript - 无法使用 ng-class 在 Angular 中应用 CSS

javascript - 存储在 Session Javascript 中后获取 DOM 事件

php - 是否有适用于 iPhone 的 PHP 和 MySQL 软件开发工具包?