将 PHP 变量传递给模态窗口

Posted

技术标签:

【中文标题】将 PHP 变量传递给模态窗口【英文标题】:Passing PHP variable to modal Window 【发布时间】:2016-12-21 01:54:55 【问题描述】:

我正在关注Pass php variable to bootstrap modal给出的解决方案

在我的例子中,触发链接将正确的值传递给 AJAX 方法,我已经在浏览器的开发人员控制台中检查了它:

<td><a href="#myModal" class="btn btn-default btn-small" id="custId" data-toggle="modal" data-id="8">Edit</a></td>

然后,模态窗口打开,但来自 info-doctor.php 的测试值未显示在其中,不是测试值,也不是文本“NO DATA”。

我的实现有什么问题?

这里有我的代码:

触发器:

$mostrar = '<td><a href="#myModal" class="btn btn-default btn-small" id="custId" data-toggle="modal" data-id="'.$row['id_doctor'].'">Edit</a></td>'; 

JS:

  $('#myModal').on('show.bs.modal', function (e) 
        var rowid = $(e.relatedTarget).data('id');
        console.log(rowid)
        $.ajax(
            type : 'post',
            url : 'info-doctor.php', //Here you will fetch records 
            data :  'rowid='+ rowid, //Pass $id
            success : function(data)
            $('.fetched-data').html(data);//Show fetched data from database
            
        );
     );

PHP:

<?php

if($_POST['rowid']) 
    $id = $_POST['rowid']; //escape string

 
 else 
     echo "NO DATA";
 
?>

编辑

这是完整的 JS:

<script type="text/javascript" language="javascript" >


            $(document).ready(function()


        $('#myModal').on('show.bs.modal', function (e) 
        var rowid = $(e.relatedTarget).data('id');

        $.ajax(
            type : 'post',
            url : 'info-doctor.php', //Here you will fetch records 
            data :  'rowid='+ rowid, //Pass $id
            success : function(data)
            $('.fetched-data').html(data);//Show fetched data from database
            console.log(rowid)
            
        );
     );
       var dataTable =  $('#employee-grid').DataTable( 
                processing: true,
                serverSide: true,

                ajax: "employee-grid-data.php", // json datasource
                 //send it through get method

                language: 
        processing:     "Procesando datos...",
        search:         "Buscar:",
        lengthMenu:    "Mostrar _MENU_ doctores/as",
        info:           "Mostrando del doctor/a _START_ al _END_ de un total de _TOTAL_ doctores/as seleccionados" ,
        infoEmpty:      "Mostrando doctor/a 0 al 0 de un total de 0 doctores/as",
        infoFiltered:   "(filtrados de _MAX_ doctores/as)",
        infoPostFix:    "",
        loadingRecords: "Procesando datos...",
        zeroRecords:    "No hay doctores/as que cumplan los criterios",
        emptyTable:     "Noy hay datos que cumplan los criterios",
        paginate: 
            first:      "Primero",
            previous:   "Anterior",
            next:       "Siguiente",
            last:       "Ultimo"
        ,
        aria: 
            sortAscending:  ": activer pour trier la colonne par ordre croissant",
            sortDescending: ": activer pour trier la colonne par ordre décroissant"
        
    

                 );

               var colvis = new $.fn.dataTable.ColVis( dataTable, 
                    buttonText: '<img src="images/down.gif" >',
                    activate: 'mouseover',
                    exclude: [ 0 ]  
                    );
               $( colvis.button() ).prependTo('th:nth-child(1)');



             );
        </script>

这是用于测试问题的完整 PHP:

<?php

     echo "NO DATA";

?>

【问题讨论】:

好吧,你根本没有回应任何东西,除非rowid 参数丢失,不是吗? @adeneo,你是对的,但我也检查了它,没有 if 子句,只在 PHP 文件中回显“TEST”,结果相同,谢谢你 所以如果你的 PHP 只是 echo "something"; 而你在成功函数中执行 console.log(data),你什么都得不到? @adeneo,我什么也得不到 如果您在浏览器中直接访问该 URL,即在地址栏中输入 localhost://info-doctor.php 或其他任何内容,但您仍然一无所获,那么您的 PHP 有问题。如果你确实得到了一些东西,那么问题就是 ajax 调用 【参考方案1】:

如果变量已经在主页上设置,则不需要 AJAX 来传递变量,尤其是如果它已经是链接上的数据属性。在模态链接上使用 data 属性:

<a href="#myModal" class="btn btn-default btn-small" id="custId" data-toggle="modal" data-id="'.$row['id_doctor'].'">Edit</a>

具体来说,您可以通过data-id="'.$row['id_doctor'].'"获得它

所以....

   $('#myModal').on('show.bs.modal', function (e) 
       var rowid = $(this).attr('data-id');
        /*
        proceed with rest of modal using the rowid variable as necessary 
        */
     );

     $('#myModal').on('show.bs.modal', function (e) 
       var rowid = $('#custId').attr('data-id');

     /*
       (This may need better targeting than an id which appear as though it would repeat resulting in invalid markup.) 
       proceed with rest of modal using the rowid variable as necessary 
     */
     );

【讨论】:

我需要从 mysql 数据库中获取值,这就是调用 AJAX 方法将变量传递给 PHP 文件的原因。 我的意思是,您已经在主页中有变量信息..您不需要需要查询数据库来检索它再次。您只需要将变量传递给模态调用。 我明白你说变量已经在首页了,那么你能告诉我如何从数据库中获取数据吗?只是一个带有数据库查询的简单 PHP 脚本?如何将给定的变量传递给模态调用?

以上是关于将 PHP 变量传递给模态窗口的主要内容,如果未能解决你的问题,请参考以下文章

传递变量模态窗口角与翡翠的CoffeeScript

将php变量传递给模态twitter bootstrap不起作用

在模态中将 Jquery 变量传递给 php

Vue.js 模态窗口在从另一个组件单击时未打开

如何使用引导程序将数据传递给模态

如何切换到模态弹出窗口并使用Telerik中的编码步骤识别其中的元素