日期:2014-05-17  浏览次数:20429 次

还是关于FCKeditor的问题,获取值和插入图片、表情有问题
FCKeditor配置好了,但插入表情、图片,写不进数据库,我推测是代码错的,因为代码里转化接收FCK里的值是用string,但不知道怎么修改; 第二个问题,有的回复留言,可以插入值,有的不可以,是与参数里的id有关系吗?

下面列出代码:

  <script type="text/javascript">
  function getEditorHTMLContents(EditorName) {
  //var oEditor = FCKeditorAPI.GetInstance(EditorName);
  //alert(oEditor);
  // var oEditor = "xyzabcd"+oEditor.value.toString();
  //var editorHtml = (oEditor.GetXHTML(true));

  var editor = FCKeditorAPI.GetInstance(EditorName);
  var editor2=editor.EditorDocument.body.innerText; 
  return editor2;
  }
   
  </script>





  function replyData(id) { //回复留言函数
   
  var textarea1 = getEditorHTMLContents("FCKeditor1"); // alert(textarea1);
  $.ajax({
  type: "POST",
  cache: false,
  url: "WebService.asmx/Update", /* 注意后面的名字对应CS的方法名称 */

  data: { "id": id, "textarea1": textarea1 }, /* 注意参数的格式和名称 */
  contentType: "application/x-www-form-urlencoded",
  dataType: "xml",
  success: function (ret) {
  // alert("2");
  //判断 ret 删除成功再决定是否刷新getData();
  getData();
  //alert("3");
  }
   

  });
  }





  [WebMethod]
  public String Update(int id, string textarea1)
  {
  System.Data.SqlClient.SqlConnection sqlCon = new SqlConnection();
  sqlCon.ConnectionString = "server=.;uid=sa;pwd=sa;database=guestbook";
  //定义SQL语句
  //string SqlStr = "update gbook set repcontent='" + textarea1 + "' where id=" + id;
  string SqlStr = string.Format("update gbook set repcontent='{0}' where id={1}", textarea1, id); //实例化SqlDataAdapter对象
  sqlCon.Open();
  SqlCommand cmd = new SqlCommand(SqlStr, sqlCon);
  int ret = cmd.ExecuteNonQuery();
  sqlCon.Close();
  if (ret > 0) return "回复成功";
  return "回复失败";
  }

------解决方案--------------------
不要这样写
string SqlStr = string.Format("update gbook set repcontent='{0}' where id={1}", textarea1, id); 


这样写,内容里面带特殊字符会出错

正规的写法

string SqlStr = "update gbook set repcontent=@repcontent where id=@id"; 
SqlCommand cmd = new SqlCommand(SqlStr, sqlCon);
cmd.Parameters.AddWithValue("@repcontent",textarea1);
cmd.Parameters.AddWithValue("@id",id);

很奇怪为什么很多人喜欢用string.Format

------解决方案--------------------
另外,注意测试前台的textarea1 是否真的提交到了后台。