- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在按照教程制作简单的网络应用程序,并且我正在使用 jeditable 进行就地编辑。
一切正常,除了新值没有保存到数据库中。 mysql 日志让我相信“listItemID”没有通过,因为它显示了如下执行的语句:
UPDATE list_items
SET ListText='Test123'
WHERE ListItemID=''
LIMIT 1
我的 index.php 中有这个:
bindAllTabs("#list li span");
这是在我的 js 文件中:
function bindAllTabs(editableTarget) {
// CLICK-TO-EDIT on list items
$(editableTarget).editable("db-interaction/lists.php", {
id : 'listItemID',
indicator : 'Saving...',
tooltip : 'Double-click to edit...',
event : 'dblclick',
submit : 'Save',
submitdata: {action : "update"}
});
}
我的 lists.php 里有这个
<?php
session_start();
include_once "../inc/constants.inc.php";
include_once "../inc/class.lists.inc.php";
if(!empty($_POST['action'])
&& isset($_SESSION['LoggedIn'])
&& $_SESSION['LoggedIn']==1)
{
$listObj = new ColoredListsItems();
switch($_POST['action'])
{
case 'add':
echo $listObj->addListItem();
break;
case 'update':
$listObj->updateListItem();
break;
case 'sort':
$listObj->changeListItemPosition();
break;
case 'color':
echo $listObj->changeListItemColor();
break;
case 'done':
echo $listObj->toggleListItemDone();
break;
case 'delete':
echo $listObj->deleteListItem();
break;
default:
header("Location: /");
break;
}
}
else
{
header("Location: /");
exit;
}
?>
然后在 class.lists.inc.php 中:
public function updateListItem()
{
$listItemID = $_POST['listItemID'];
$newValue = strip_tags(urldecode(trim($_POST["value"])), WHITELIST);
$sql = "UPDATE list_items
SET ListText=:text
WHERE ListItemID=:id
LIMIT 1";
if($stmt = $this->_db->prepare($sql)) {
$stmt->bindParam(':text', $newValue, PDO::PARAM_STR);
$stmt->bindParam(':id', $listItemID, PDO::PARAM_INT);
$stmt->execute();
$stmt->closeCursor();
echo $newValue;
} else {
echo "Error saving, sorry about that!";
}
}
我花了几个小时试图解决这个问题。我希望有一个人可以帮助我。谢谢!
最佳答案
几乎晚了一年但是......我已经为这个问题跑了 2 天,试图完成相同的教程。
如您所见,问题在于 jEditable 无法处理当前元素的 ID,因此 $_POST['ListItemID'] 最终为空。
在 bindAllTabs 函数中,jEditable 将接受 submitdata
字段中的附加参数:
submitdata: { action: "update", ListItemID: this.id }
但问题是 jEditable 调用未绑定(bind)到允许我们使用 this.id
的事件 - 因此允许我们获取当前项目的 ID正在点击。您可以对该值进行硬编码,然后看到它然后设置了 $_POST['ListItemID'](这纯粹是一个学术测试)......并且没有办法即时获取当前 ID并将其插入到 submitdata
中。我不是天才,但我几乎什么都试过了。
解决方案我通过编辑 jEditable 本身的代码找到了修复。这一行(我在 jEditable.js 的第 176 行看到的):
submitdata[settings.id] = self.id;
...是错误发生的地方。它是空白的,因为 self.id
没有给出任何结果。用这段代码替换这一行:
submitdata[settings.id] = $(self).parent().attr('id');
使用 submitdata: { action: "update", ListItemID: $(self).parent().attr('id') }
本身 不会 工作.
您还必须更新教程中的其他一些内容,因为 jQuery 已经弃用了一些内容,但您可能已经这样做了。例如 .live(/**/)
更新为 .on( 'click' , null, function(){/**/});
等等.
关于php - Jeditable 新值不会保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41817204/
我使用 jEdit 作为文本编辑器,因为它是跨平台的,并且具有我需要的所有功能(Java 正则表达式、按键宏等)。但是,在新计算机上进行设置和同步设置(键盘绑定(bind)、文件保存选项等)很痛苦。
当 Isabelle 在 ProofGeneral 中显示目标时,假设被呈现为在它们周围有括号,如下所示: 然而,在 Isabelle/jEdit 中,这似乎已更改为元蕴涵箭头: 虽然我知道前者有点不
我使用 jedit 已有几年了。我以服务器模式安装了它(不是最近),以便每次操作系统启动时 jedit-server 都会启动。 我使用的是 windows 7 和 java 1.8.0_111,最近
假设我有一个目录 isabelle_afp存储了很多理论的地方。该目录是一个库,我不打算更改其中的文件。我想加快 Isabelle/jEdit 的启动时间(默认情况下,isabelle_afp 我当前
我正在使用 JEdit 和 JDiff 插件进行文件比较。现在我想使用命令行参数从另一个工具打开 JDiff 插件。这可能吗?到目前为止,我只能在 JEdit 中打开要比较的 2 个文件。 最佳答案
我正在使用 jeditable 插件来使某些值可编辑。我注意到当一个值为空时,会出现我不想要的默认文本“单击顶部编辑”。但我仍然想让该字段也可编辑。如何管理? 我在 http://www.datata
我有一张表格,上面有几行数据。我希望通过单击行本身或编辑按钮来编辑该行的大部分内容。 假设我有一张列出产品的表格: 产品名称 品牌 模型 价格 我可以通过使用 jQuery 和 jEditable 来
我有一个由jeditable更新的字段。如果要减小值(这会导致数据丢失),但如果要增加值,我想在提交更新之前输出警告消息。 这似乎是jeditable的onsubmit函数的不错选择,我可以很高兴地触
我正在使用Jeditable用于就地编辑。我正在使用的控件之一具有 select 类型。当用户单击该字段时,将生成以下选择控件: Active
这是我使用 jEditable 将选择下拉列表添加到表行的代码: $('tr',this).find('td:eq(8)').css('cursor','pointer') .editable
jeditble 上是否有任何选项,因此当我双击文本并弹出文本框时,它会突出显示所有文本 最佳答案 使用选择参数。 True 表示选择(突出显示全部)。假则相反。 $(".editable").edi
当我单击编辑某些文本时,Jeditable 会在文本区域中的实际文本周围插入额外的空格。我如何修剪这个或实际修复这个? 最佳答案 您实际上可以只传递一个函数来修剪您要编辑的字符串。在您的设置中使用它:
在决定要做什么之前,我如何检查页面返回的内容? 例如,如果页面返回404,超时或我自己的消息,我希望能够向用户显示一条错误消息,并将该值恢复为原始值,而不是在该值上打印页面返回的内容被编辑。 提前。
当我在编辑单元格值后在表格单元格中使用 jeditable 时,单元格的值会随着来自服务器的值而更改: 我的意思是细胞是 old Value 我编辑它,服务器返回“新值” jeditable 将此值插
我试图弄清楚如何使用 1 个编辑按钮编辑具有特定类的所有区域。 这是我的 JS:我将它放入一个函数中以便再次使用。我有一个周围的 div,里面有包含“详细信息”类的跨度 如何创建 1 个“编辑”按钮并
我成功地使用 jeditable 通过函数提交jQuery.ajax 和 async: false 选项,但遇到问题如果返回错误则中止。 如何让编辑框保持激活状态和/或恢复到原值是否有错误?我正在返回
好吧,对于 jeditable 来说是全新的, 假设我有一些的和使用 PHP 动态生成的项目如下: fetch_assoc($query)) : ?> " 这让我说......这个
我一直在使用 JQuery 的 JEditable 插件,我想向插件返回错误以指示它恢复到以前的值并向用户显示错误。我使用同步 ajax 调用来完成此工作,但我更喜欢使用异步回调。我到目前为止的代码如
我正在按照教程制作简单的网络应用程序,并且我正在使用 jeditable 进行就地编辑。 一切正常,除了新值没有保存到数据库中。 mysql 日志让我相信“listItemID”没有通过,因为它显示了
我正在使用 var retval = value.replace(//gi, '\n'); 剥离来自 textarea 和 nl2br('$_POST('newValueHere')') 的标签插入我
我是一名优秀的程序员,十分优秀!