jEditable 响应处理问题
jEditable response handling issues
我有一堆 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="organisation" 的 td 字段成功地将东西发送到数据库中,就好了。
在处理此问题的 php 的后端位中,直接在工作正常的 DB 函数之后,我有:
header('Content-type: application/json');
(截断数据库更新代码 - 工作正常)
$report = array();
$report['organisation'] = $userInput;
$report['result'] = "✔";
echo json_encode($report);
同一个 php 的 header 设置为:
因此,一旦将输入并保存到 editable table 单元格中的文本输入到数据库中,上面的内容将发送回前端('Hello World' 是输入的示例文本):
{"organisation":"Hello World","result":"✔"}
那么发生编辑的td单元格中显示的是:
{"organisation":"Hello World","result":"✔"}
这不是我们想要的。勾号是 ✔
应该是什么,但我的意思是我希望 "Hello World" 部分显示(当然没有引号)并且结果显示在跨度或 div 与 id="result",在页面的其他地方。
我读到我需要使用 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',
});
因为看似垃圾的输出并非来自实际保存在数据库中的内容,所以成功后的新加载 post 意味着页面显示如预期的那样干净。
这不是一个很好的解决方案,但它可以工作并且不依赖于讨厌的黑客。
我有一堆 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="organisation" 的 td 字段成功地将东西发送到数据库中,就好了。
在处理此问题的 php 的后端位中,直接在工作正常的 DB 函数之后,我有:
header('Content-type: application/json');
(截断数据库更新代码 - 工作正常)
$report = array();
$report['organisation'] = $userInput;
$report['result'] = "✔";
echo json_encode($report);
同一个 php 的 header 设置为:
因此,一旦将输入并保存到 editable table 单元格中的文本输入到数据库中,上面的内容将发送回前端('Hello World' 是输入的示例文本):
{"organisation":"Hello World","result":"✔"}
那么发生编辑的td单元格中显示的是:
{"organisation":"Hello World","result":"✔"}
这不是我们想要的。勾号是 ✔
应该是什么,但我的意思是我希望 "Hello World" 部分显示(当然没有引号)并且结果显示在跨度或 div 与 id="result",在页面的其他地方。
我读到我需要使用 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',
});
因为看似垃圾的输出并非来自实际保存在数据库中的内容,所以成功后的新加载 post 意味着页面显示如预期的那样干净。
这不是一个很好的解决方案,但它可以工作并且不依赖于讨厌的黑客。