我有一堆看起来像这样的 html - 这里只显示一个,因为它就是所需要的:
<tr>
<td>Name of Organisation:</td>
<td class="edtext" id="organisation"><?=$aRes[0]['organisation']?></td>
</tr>
在页面的头部我有这个:
$(function() {
$(".edtext").editable("./editHandler/WRITE.update.php?uaID=<?=$uaID?>", {
event : 'dblclick',
dataType : "json",
placeholder : '',
indicator : 'Saving...',
cssclass : 'editable',
submit : 'Save',
cancel : 'Cancel',
});
});
我可以通过双击然后编辑我已为其指定 id="organization"的 td 字段,成功地将内容发送到数据库中,就可以了。
在处理这个问题的 php 后端中,直接在运行良好的 DB 函数之后,我有:
header('Content-type: application/json');
(截取数据库更新代码 - 它工作正常)
$report = array();
$report['organisation'] = $userInput;
$report['result'] = "✔";
echo json_encode($report);
同一个 php 的 header 设置为:
因此,一旦将输入并保存到可编辑表格单元格中的文本输入到数据库中,上面的内容就会发送回前端(“Hello World”是输入的示例文本):
{"organisation":"Hello World","result":"✔"}
然后在进行编辑的 td 单元格中显示的内容是:
{"organisation":"Hello World","result":"✔"}
这不是我们想要的。勾号是 ✔
应该是的,但我的意思是我希望显示“Hello World”部分(当然不带引号)并将结果显示在页面其他位置带有 id="result"的 span 或 div。
我读到我需要使用 jEditable callback
选项,但是我找不到任何如何执行此操作的示例。我对 JS 不太有信心,希望有人能把我推向正确的方向。欢迎使用功能示例。
顺便说一句,我需要能够将这段 JS 用于多个文本字段,而不需要为每个需要编辑访问权限的数据单元格提供单独的 JS 条目。
最佳答案
我通过添加解决了问题:
callback : function() {
location.reload();
},
进入:
$(".edtext").editable("./editHandler/WRITE.update.php?uaID=<?=$uaID?>", {
event : 'dblclick',
dataType : "json",
placeholder : '',
indicator : 'Saving...',
cssclass : 'editable',
submit : 'Save',
cancel : 'Cancel',
});
});
部分,最终结果是:
$(".edtext").editable("./editHandler/WRITE.<?=$appKey?>.php?uaID=<?=$uaID?>", {
callback : function() {
location.reload();
},
event : 'dblclick',
placeholder : '',
indicator : 'Saving...',
cssclass : 'editable',
submit : 'Save',
cancel : 'Cancel',
});
因为看似垃圾的输出并非来自数据库中实际保存的内容,所以成功发布后的新加载意味着页面按照预期清晰地显示。
这不是一个很好的解决办法,但它有效并且不依赖于讨厌的黑客。
关于javascript - jEditable 响应处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39219148/