我正在使用railo,并试图通过ajax提交一个tinymce文本区。
我的问题是,在提交时,html似乎被剥离了,而sql实际上并没有更新。
下面是我的代码:
function UpdateHome() {
document.getElementById('UpdateProcessing').style.display = '';
document.getElementById('HomeForm').style.display = 'none';
ColdFusion.Ajax.submitForm("HomeForm","action.cfm",HomeUpdateReturn);
}
<form action="action.cfm" method="post" id="HomeForm">
<input type="hidden" name="action" value="HomeUpdate" />
<CFLOOP QUERY="FetchHome">
<textarea id="HomeArea" name="HomeArea" class="tinymce" rows="20" cols="20"
style="width:100%; height:500px" >#Body#</textarea>
</CFLOOP>
<input type="button" class="HomeSubmit" value="Save" onClick="UpdateHome();" />
</form>
<CFQUERY NAME="UpdateHome">
UPDATE Content
SET Body = '#HomeArea#'
WHERE ID = 1
</CFQUERY>
<CFSET UdateHome = ArrayNew(1)>
<CFSET UpdateHome[1] = true>
<CFCONTENT TYPE="application/json" RESET="true">
<CFOUTPUT>#serializeJSON(UpdateHome)#</CFOUTPUT>当我在没有ajax的情况下提交表单时,sql运行良好。
有人知道为什么它不能通过ajax提交html格式的文本吗?
发布于 2012-07-03 17:50:14
提交表单之前,您需要做的就是调用javascript行
tinymce.triggerSave()发布于 2012-07-03 03:51:12
这里有几个问题:
ColdFusion.Ajax.submitForm(),除非你正在使用cfform或者除非你使用<cfajaximport ... />来导入javascript。您是否通过Firebug或Chrome开发工具确认Javascript没有抛出错误?我怀疑是这样的。将您的<form ... >和</form>标记更改为<cfform ...>和</cfform>,然后重试。,
HomeUpdateReturn返回处理函数。您需要在Javascript代码中编写此函数。你还有其他几个问题,我不能不指出就让它过去:
'#homearea#'。它可以引用任何homearea变量,并且可能不是您期望的表单范围内的变量。将其更改为#form.homearea#。这将确保只使用表单作用域中的变量。<cfqueryparam ... />,否则您将面临sql注入攻击。因此,将'#homearea#'更改为<cfqueryparam cfsqltype="cf_sql_longchar" value="#form.homearea#" />。(假设您在数据库中使用的是一个大文本字段)如果不使用参数化查询,永远不要允许未经检查的用户输入直接进入您的查询。https://stackoverflow.com/questions/11298929
复制相似问题