未捕获的错误:Tabledit 仅在应用于表时有效

Posted

技术标签:

【中文标题】未捕获的错误:Tabledit 仅在应用于表时有效【英文标题】:Uncaught Error: Tabledit only works when applied to a table 【发布时间】:2019-12-10 15:32:15 【问题描述】:

我有一个从数据库正确填充的表,但是,当我尝试进行任何编辑时,会向我报告以下错误,这会阻止我完成对列的编辑。

jquery.tabledit.js:22 Uncaught Error: Tabledit only works when applied to a table.

我想编辑 choice 列中的值,如果您能查看我的代码并告诉我可能哪里出了问题,我将不胜感激。 p>

<?php
//StaffArea

/** Include the mysql connection */
require 'includes/connect.php';

$stmt = $conn->prepare(" SELECT * FROM `students` WHERE `choice` = 'NOSPORT' ");

$stmt->execute();
?>

<!DOCTYPE html>
<html lang="en">
  <head>
	<title>Untitled Document</title>
	<!-- Bootstrap -->
	<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
	<script src="jquery-tabledit/jquery.tabledit.js"></script>
	<script src="bootstrap/js/bootstrap.min.js"></script>
	<script type="text/javascript">
		$('#nstable').Tabledit(
			url: 'example.php',
			columns: 
				identifier: [0, 'id'],
				editable: [6, 'choice']
			,
			onDraw: function () 
				console.log('onDraw()');
			,
			onSuccess: function (data, textStatus, jqXHR) 
				console.log('onSuccess(data, textStatus, jqXHR)');
				console.log(data);
				console.log(textStatus);
				console.log(jqXHR);
			,
			onFail: function (jqXHR, textStatus, errorThrown) 
				console.log('onFail(jqXHR, textStatus, errorThrown)');
				console.log(jqXHR);
				console.log(textStatus);
				console.log(errorThrown);
			,
			onAlways: function () 
				console.log('onAlways()');
			,
			onAjax: function (action, serialize) 
				console.log('onAjax(action, serialize)');
				console.log(action);
				console.log(serialize);
			
		);
	</script>	 
	<style>

	  .table.user-select-none 
		-webkit-touch-callout: none;
		-webkit-user-select: none;
		-khtml-user-select: none;
		-moz-user-select: none;
		-ms-user-select: none;
		user-select: none;
	  

	</style>
  </head>

  <body>
	<div class="container"></div>
	<table class="table" id="nstable" style="border:1px solid red">
	  <thead>
		<tr>
		  <th>ID</th>
		  <th>First Name</th>
		  <th>Last Name</th>
		  <th>Username</th>
		  <th>StudentID</th>
		  <th>Year</th>
		  <th>Choice</th>
		</tr>
	  </thead>
	  <tbody>
<?php while ($row = $stmt->fetch(PDO::FETCH_ASSOC))  ?>
			<tr>
			  <td><?php echo $row['id']; ?></td>
			  <td><?php echo $row['firstname']; ?></td>
			  <td><?php echo $row['lastname']; ?></td>
			  <td><?php echo $row['username']; ?></td>
			  <td><?php echo $row['studentid']; ?></td>
			  <td><?php echo $row['year']; ?></td>
			  <td><?php echo $row['choice']; ?></td>
			</tr>
<?php  ?>
	  </tbody>
	</table>
  </body>
</html>

【问题讨论】:

我的回答可能有点过头了,您能否展示一下位于 example.php 中的代码。 prepare(" UPDATE students SET choice= '" . $input['choice'] . "' WHERE id='" . $input['id'] . "' "); $stmt->执行(); 回声 json_encode($input); ?> 【参考方案1】:

欢迎来到 Stack Overflow。

看起来您正在尝试在文件上使用表格编辑,而您想要做的是直接在表格上使用它。应该是这样使用的。

$('#my-table').Tabledit(
    columns: 
      identifier: [0, 'id'],                   
      editable: [[1, 'First Name'], [2, 'Last Name']]

代码的 Ajax 部分在“保存”编辑后使用。将侦听器绑定到按钮,在侦听器中,您需要跟踪所有编辑的字段,以及当侦听器发现需要发送的更改时,即使用更改后的数据进行 ajax 调用时。

【讨论】:

谢谢克里斯,非常感谢您的帮助,但是,它仍然给我错误。此外,这直接取自 Tabledit 示例:markcell.github.io/jquery-tabledit/#examples ps 也得到 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse () at showNeg.js:241 at XMLHttpRequest.onDefaultReadyStateChangeHandler【参考方案2】:

解决这个问题的方法是在表格之后运行脚本。这样可以在 jquery 运行之前生成完整的表。

【讨论】:

【参考方案3】:

首先你检查数据执行

打印

var_dump($stmt->fetch_assoc());

【讨论】:

嘿,感谢您的评论,该表是从数据库中的数据正确生成的,这让我相信 fetch(PDO:: FETCH_ASSOC)) 这段代码 sn-p 正在做它应该做的事情。

以上是关于未捕获的错误:Tabledit 仅在应用于表时有效的主要内容,如果未能解决你的问题,请参考以下文章

GLSL:采样器上传仅在删除未使用的采样器时有效

KnockoutJS:模板未在可观察数组更改时更新(仅在添加时,在删除时有效)

Django 的 FilteredSelectMultiple 小部件仅在登录时有效

Flutter 推送通知仅在应用程序处于后台时有效

Google Apps 脚本文件上传(通过 HTML 表单)仅在脚本“绑定”时有效(测试独立脚本时,HTTP 403 错误)

Android 中的推送通知仅在 PhoneGap 应用程序在前台使用 node-pushnotifications 时有效