javascript - 意外的标识符,而
问题描述
我有一个意外的代码错误,但我无法识别它。
代码:
$('#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>';
});
});
解决方案
就在这一行,您有一个打开的 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
存在。
推荐阅读
- angular - Docker 网络实时重载节点/角度应用程序
- reporting-services - 为什么 SSRS 在选择时日期参数无效,但在“默认”时无效?
- jquery - 如果目录不存在,.htaccess 重写文件匹配条件
- android - Firestore 的 FirebaseUI 是否需要 ViewModel?在安卓中
- ember.js - 在控制器之间共享服务变量
- c++ - 通知格式错误的模板实例化的最佳方式是什么?
- javascript - vue-auth 和 axios 的控制台错误:“未捕获(承诺中)错误:请求失败,状态码 401”
- macos - 未找到 ngrok 命令且已在 /usr/local/bin 上
- node.js - 形成nodejs http服务器,在浏览器中我们得到“域”没有发送任何数据。ERR_EMPTY_RESPONSE
- python-3.x - 如何在python中使用请求抓取多个页面