王牌编辑器 - 通过开机自检在服务器上保存/发送会话
Ace editor - save/send session on server via POST
我写在线网页编辑器,我想将当前视图/工作保存在服务器上,以便将来恢复。我还想做多个标签。
我知道,这是editor.getSession()
和editor.setSession()
.
.JS:
var editor = ace.edit("description");
editor.session.setMode("ace/mode/javascript");
editor.setTheme("ace/theme/tomorrow");
editor.setShowPrintMargin(false);
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: true
});
现在我尝试通过 jQuery $.data()
将会话保存到元素:
$('#tab1').data('sesi',editor.getSession()); //save session
editor.setSession($('#tab2').data('sesi')); //restore other session
但是这段代码不起作用。当我尝试console.log(editor.session);
时,我在控制台中看到了很多代码。
我尝试通过 POST 数据将session
发送到服务器,但在网络控制台中我只看到来自编辑器的代码,仅此而已......
$.ajax({
type: "POST",
url: "aaaaa.php",
cache: false,
timeout: 10000,
data: "session="+ editor.session
});
如何将会话保存到变量或服务器?
要将会话保存到服务器,您需要将其转换为可以传递给json的普通对象。字符串化。 在您的示例中session="+ editor.session
只是调用 session.toString,它与 session.getValue 相同
var filterHistory = function(deltas){
return deltas.filter(function (d) {
return d.group != "fold";
});
}
sessionToJSON = function(session) {
return {
selection: session.selection.toJSON(),
value: session.getValue(),
history: {
undo: session.$undoManager.$undoStack.map(filterHistory),
redo: session.$undoManager.$redoStack.map(filterHistory)
},
scrollTop: session.getScrollTop(),
scrollLeft: session.getScrollLeft(),
options: session.getOptions()
}
}
sessionFromJSON = function(data) {
var session = require("ace/ace").createEditSession(data.value);
session.$undoManager.$doc = session; // workaround for a bug in ace
session.setOptions(data.options);
session.$undoManager.$undoStack = data.history.undo;
session.$undoManager.$redoStack = data.history.redo;
session.selection.fromJSON(data.selection);
session.setScrollTop(data.scrollTop);
session.setScrollLeft(data.scrollLeft);
return session;
};
现在要获取会话的状态,请执行
var session = editor.session
var sessionData = sessionToJSON(session)
$.ajax({
type: "POST",
url: "aaaaa.php",
cache: false,
timeout: 10000,
data: JSON.stringify(sessionData)
});
并从服务器还原它
var session = sessionFromJSON(JSON.parse(ajaxResponse))
editor.setSession(session)
相关文章:
- Javascript 会话存储变量未正确保存
- 在几个浏览会话中保存javascript变量
- 需要将一个值从javascript变量保存到php会话
- 在浏览器会话中保存表单数据
- 王牌编辑器 - 通过开机自检在服务器上保存/发送会话
- 会话存储未保存或未加载
- 仅在某些请求上保存用户会话
- 使用 $.ajax({});时未保存快速会话;
- PHP 会话不通过多个页面保存变量
- 在脸书登录时保存会话
- “保存”OpenLayers会话,以便可以恢复它
- 余烬简单身份验证在会话中保存用户配置文件
- 角度将变量保存到带有 ajax 调用的 laravel 会话不起作用
- 在标头之前保存会话存储的最佳方法
- 我不知道如何使用session-express来保存会话
- 套接字.io 1.0.5:如何保存会话变量
- Angular js保存会话数据
- Sencha touch:保存登录名/密码(保存会话,多任务)
- 在函数调用中不保存会话
- Node.js和passport-facebook不保存会话