一切福田,不離方寸,從心而覓,感無不通。

UEditor表单提交和后台交互详解

最后更新对应的版本:1.2.5.1

教程描述: 富文本编辑器的使用开发中,表单提交有多种场景,编辑器初始化有新增文章和编辑就文章两种场景,提交表单有普通提交也有ajax提交表单两种情景,此教程详细讲解这几种场景下如何保证后台正确拿到数据。

一、编辑器内容初始化(即往编辑器中设置富文本)
场景一:写新文章,编辑器中预置提示、问候等内容。
在editor_config.js文件中找到initialContent参数,设置其值为需要的提示或者问候语即可,如initialContent:’欢迎使用UEditor!’。

场景二:编辑旧文章,从数据库中取出富文本放置到编辑器中。
显然,编辑文章时需要从后台数据库中取出大段富文本,如果仍然采用场景一中的方式去设置初始值的话,必然会带来诸如引号匹配被截断等问题,因此需要采用另外一种方式去设置,如下代码所示:

  1. <script type="text/plain" id="editor">
  2.     //从数据库中取出文章内容打印到此处
  3. </script>

复制代码

此处采用了script标签作为编辑器容器对象,并设置了其类型是纯文本,从而在避免了标签内部JS代码执行的同时解决了部分同学在使用传统的textarea标签作为容器所带来的一次额外转码问题,只要此处设置的内容不为空字符串,内容会覆盖配置文件的initialContent参数的值。

二、提交编辑器内容至后端
场景一:在编辑器所在的Form中存在提交按钮,提交动作由点击此按钮完成。
该场景适用于最普通的场合,没有太大问题需要注意,仅三点说明:
1) 默认情况下提交到后台的表单名称是 "editorValue",在editor_config.js中可以配置,参数名为textarea
2) 可以在容器标签(即script标签)上设置name属性,以覆盖editor_config.js中的默认配置。实例代码如下,此处的
myContent将成为新的提交表单名称:

  1. <form action="" method="post">
  2.     <script type="text/plain" id="editor" name="myContent"></script>
  3.     <input type="submit" name="submit" value="提交">
  4. </form>

复制代码

3)后端接收程序可以通过如下几种方式来获取编辑器中的富文本内容。

  1. //PHP获取:
  2. $_POST["myContent"]
  3. //JSP获取:
  4. request.getParameter("myContent");
  5. //ASP获取:
  6. request("myContent");
  7. //NET获取:
  8. context.Request.Form["myContent"];

复制代码

    场景二:编辑器所在的Form中不存在提交按钮,提交动作由外部事件触发。
该场景适用于站点前端交互较多的场合,需要注意的事项主要是在触发form提交动作之前执行编辑器内容同步操作。一般的代码模式如下所示:

  1. //满足提交条件时同步内容并提交,此处editor为编辑器实例
  2. if(editor.hasContents()){ //此处以非空为例
  3.     editor.sync();       //同步内容
  4.     someForm.submit();   //提交Form
  5. }

复制代码

另外,如果是js代码动态去获取表单内容,可以直接调用editor.getContent()方法

场景三:编辑器不在任何Form中,提交动作由外部事件触发。
该场景使用不多,但特殊时候可能需要。UEditor也提供了对应的处理方案,基本逻辑跟场景二一样,只是在执行同步操作的时候需要传入提交form的id,如editor.sync(myFormID)即可,其他同场景二。还可以使用editor.getContent()方法手动设置。

 

from:http://www.ueditorbbs.com/forum.php?mod=viewthread&tid=17618&extra=&ordertype=2