还是关于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 是否真的提交到了后台。