首页 > 解决方案 > 意外的标识符,而

问题描述

我有一个意外的代码错误,但我无法识别它。

代码:

$('#add1').click(function(){
   var html = '<tr>';
   html += '<td contenteditable ><input type="date" class="input-date" id="data1"/></td>';
   html += '<td contenteditable><input type="text" class="input-day" id="data2"/></td>';
   html += '<td contenteditable ><input type="time" id="data3"/></td>';
   html += '<td contenteditable><input type="time"  id="data4"/></td>';
   html += '<td contenteditable><select id="data5"><option></option><?php
   $sql = "SELECT nome FROM raddb.Utente ORDER BY nome ASC";
   $qr = mysqli_query($conn, $sql);
   while($ln = mysqli_fetch_assoc($qr)){
   echo "<option value=".$ln['nome'].">".$ln['nome']."</option>";
   }?></select></td>';
   html += '</tr>';
  });

在我的角色中,这条回声线给出了意外错误:

echo "<option value=".$ln['nome'].">".$ln['nome']."</option>";

完整代码:

$(document).ready(function(){
  dom: 'Bflrtip',
  fetch_data();

  function fetch_data()
  {
   var dataTable = $('#user_data').DataTable({
       dom: 'Bflrtip',
    "processing" : true,
    "serverSide" : true,
    "pagingType": "full_numbers",
        "iDisplayLength": 5,
        "oLanguage": {
    "sProcessing": "Aguarde enquanto os dados são carregados ...",
    "sLengthMenu": "Mostrar _MENU_ registos por página",
    "sZeroRecords": "Nenhum registo correspondente ao criterio encontrado",
    "sInfoEmtpy": "Exibindo 0 a 0 de 0 registos",
    "sInfo": "Exibindo de _START_ a _END_ de _TOTAL_ registos",
    "sInfoFiltered": "",
    "sSearch": "<span class='glyphicon glyphicon-search'></span>",
    "oPaginate": {
       "sFirst":    "<span class='glyphicon glyphicon-fast-backward'></span>",
       "sPrevious": "<span class='glyphicon glyphicon-backward'></span>",
       "sNext":     "<span class='glyphicon glyphicon-forward'></span>",
       "sLast":     "<span class='glyphicon glyphicon-fast-forward'></span>"
     }
    },
    buttons: [
      {
            extend: 'excel',
                text: 'excel',
                title: 'Consultas Semanais',

        },
        {
            extend: 'pdf',
                text: 'pdf',
                title: 'Consultas Semanais',

        },
        {
            extend: 'print',
                text: 'print',
                title: 'Consultas Semanais',
                customize: function ( win ) {
                    $(win.document.body)
                        .css( 'font-size', '10pt' );

                    $(win.document.body).find( 'table' )
                        .addClass( 'compact' )
                        .css( 'font-size', 'inherit' );
                }
        }
    ], 
    "order" : [],
    "ajax" : {
     url:"./fetchconsulta",
     type:"POST"
    }   
    });   
    }

    function update_data(id, column_name, value)
   {
   $.ajax({
    url:"./updateconsulta",
    method:"POST",
    data:{id:id, column_name:column_name, value:value},
    success:function(data)
    {
     $('#alert_message').html('<div class="alert alert-success">'+data+'</div>');
    }
   });
   setInterval(function(){
    $('#alert_message').html('');
   }, 5000);
  }

  $(document).on('blur', '.update', function(){
   var id = $(this).data("id");
   var column_name = $(this).data("column");
   var value = $(this).text();
   update_data(id, column_name, value);
  });

  var semana = ["Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado"];

   $('#add1').click(function(){
   var html = '<tr>';
   html += '<td contenteditable ><input type="date" class="input-date" id="data1"/></td>';
   html += '<td contenteditable><input type="text" class="input-day" id="data2"/></td>';
   html += '<td contenteditable ><input type="time" id="data3"/></td>';
   html += '<td contenteditable><input type="time"  id="data4"/></td>';
   html += '<td contenteditable><select id="data5"><option></option><?php
   $sql = "SELECT nome FROM raddb.Utente ORDER BY nome ASC";
   $qr = mysqli_query($conn, $sql);
   while($ln = mysqli_fetch_assoc($qr)){
   echo "<option value=".$ln['nome'].">".$ln['nome']."</option>";
   }?></select></td>';
   html += '</tr>';
  });


});

标签: javascriptphp

解决方案


就在这一行,您有一个打开的 PHP 标记,而没有关闭表格单元格和代码行:

html += '<td contenteditable><select id="data5"><option></option><?php

编辑你想要这个,这是整个块:

   html += '<td contenteditable><select id="data5"><option></option>';
   <?php
       $sql = "SELECT nome FROM raddb.Utente ORDER BY nome ASC";
       $qr = mysqli_query($conn, $sql);
       while($ln = mysqli_fetch_assoc($qr)){
          echo "<option value=".$ln['nome'].">".$ln['nome']."</option>";
       }
    ?>
   html += '</select></td>';
   html += '</tr>';

但是您在这里遇到了问题 您试图在 JavaScript 命令中运行 PHP,但这是行不通的。如果要保持函数“原样”,您需要做的是触发对 PHP 的 AJAX 请求并返回要放入标记中的选项的信息。因此,您的代码应该是这样的:

html += '<td contenteditable><select id="data5"><option></option>';
$('#data5').load('options.php');
html += '</select></td>';
html += '</tr>';

options.php 是这样的:

<?php
    $conn = mysqli_connect("HOST", "USER", "PW", "DATABASE");
    $sql = "SELECT nome FROM raddb.Utente ORDER BY nome ASC";
    $qr = mysqli_query($conn, $sql);
       while($ln = mysqli_fetch_assoc($qr)){
          echo "<option value=".$ln['nome'].">".$ln['nome']."</option>";
       }
    ?>

但是您可能会遇到时间问题,因为当 AJAX 从 PHP 返回数据时可能不存在,因此您必须在进行AJAX 调用之前#data5确保#data5存在。


推荐阅读