PHP文件输出javascript代码本身而不是运行

时间:2016-03-18 18:35:04

标签: javascript php jquery

我正在尝试创建编辑模式。如果我有这个的html代码,我写这个javascript / jquery代码:

   <script type='text/javascript'>
 $(function() {

    <?php
    $q  =  $db->query("select * from tblUnit where unitStatus <> '2'");
      while($r = $q->fetch(PDO::FETCH_ASSOC)){ 
                                echo " <script type'text/javascript'> alert('1');</script>";
                                $unitID         = $r['unitID'];
                                $unitStatus     = $r['unitStatus'];
                                $unitNumber     = $r['unitNumber'];
                                $floorNumber    = $r['floorCode'];
                                $unitType       = $r['unitType'];   
    $t = $db->query("select floorLevel, floor_buildingID from tblFloors where floorLevel = '$floorNumber'");
            while( $u = $t->fetch(PDO::FETCH_ASSOC)){
                                $floorLevel     = $u['floorLevel'];
                                $floor_buildingID = $u['floor_buildingID'];
                              $w = $db->query("select unitTypeName from tblUnitType where unitTypeID = $unitType");     
                              while($x = $w->fetch(PDO::FETCH_ASSOC)){
                                  $unitTypeName   = $x['unitTypeName'];
    ?>
            $("#editModal<?php echo $unitID; ?>").click(function(){
              $("#editUnitNumber").val("<?php echo $unitNumber;?>");              

              $("#editUnitType").val("<?php   echo $unitType; ?>").material_select('update');              
              $("#editFloorNumber").val("<?php  echo $floorNumber; ?>");


            });
<?php }}}?>   
});

上面的代码用于从模态中写入数据,而是输出:

$("#editModal5").click(function(){ $("#editUnitNumber").val("12002"); $("#editUnitType").val("4").material_select('update'); $("#editFloorNumber").val("12"); }); });

我该如何解决?是什么原因造成的?

1 个答案:

答案 0 :(得分:0)

使用json将数据从php传递到javascript,而不是在一个地方回显所有内容。它似乎有点矫枉过正,但它具有可读性,从长远来看更有利。

下面的代码未经过测试,但它应该为您提供有关如何处理这些内容的一般概念。我没有在第一个while循环中包含第二个和第三个查询。您可以将这些查询的结果嵌套在$ unit数组中,并通过javascript中的其他循环访问相关数据。

另外,理想情况下,您不会在php之后立即回显解码数组,更好的解决方案是在页脚中调用函数,这将生成包含javascript使用的所有数据的脚本标记。另一种方法是使用AJAX并仅在需要时获取json响应,然后将相同的json提供给循环。

<?php
    $q  =  $db->query("select * from tblUnit where unitStatus <> '2'");
    $units = [];
    while($r = $q->fetch(PDO::FETCH_ASSOC)){ 
        $unit = [
            'unitID' => $r['unitID'],
            'unitStatus' => $r['unitStatus'],
            'unitNumber'     => $r['unitNumber'],
            'floorNumber'    => $r['floorCode'],
            'unitType'       => $r['unitType'] 
        ];
        $units[] = $unit;
    }
    $units_json = json_encode($units);
?>
<script type='text/javascript'>
$(function() {
    var units = '<?php echo $units_json ?>';
    var units_array = JSON.parse(units);
    // do some validation here
    for (var i = 0; i < units_array.length; i++) {
        // do some validation here
        $("#editModal" + units_array[i].unitID).click(function(){
            $("#editUnitNumber").val(units_array[i].unitNumber);
            $("#editUnitType").val(units_array[i].unitType).material_select('update');              
            $("#editFloorNumber").val(units_array[i].floorNumber);
        });
    };
});
</script>