我试图在我的ColdFusion应用程序中将一个非常简单的表单提交到一个操作页面,以更新一些数据库记录。
当我提交表格时,Firebug告诉我
500(元素NOTETEXT在FORM中未定义。)
这是我的JavaScript
<!---Javascript that submits the link notes changes --->
<script>
$(function(){
$("#noteForm").submit(function(){
// prevent native form submission here
$.ajax({
type: "POST",
data: $('#noteForm').serialize(),
dataType: 'json',
url: "actionpages/link_notes_action.cfm?id=2",
success: function(responseSubmit) {
alert("Success");
}
});
return false;
});
});
</script>
这是我的表格
<form id="noteForm">
<textarea id="noteText" name="noteText" cols="45" rows="10">#notes#</textarea><br />
<input name="submit" id="submitForm" type="submit" value="Update">
<input type="hidden" name="hidden" value="#get_dashboard_links.ID#">
</form>
这是我的行动页面:
<cfquery name="update" datasource="#datasource#">
update dashboard_links
set notes = '#form.noteText#'
where ID = #form.hidden#
</cfquery>
答案 0 :(得分:2)
ColdFusion键取决于表单对象的名称,而不是ID。
将您的textarea更改为
<cftextarea id="noteText" name="noteText" cols="45" rows="10">
OR
如此更改您的操作页面:
set notes = '#form.notes#'
(顺便说一下,我希望您实际上没有使用未经过滤的输入更新您的数据库。您正在使用cfqueryparam
,对吧?)
答案 1 :(得分:1)
在提交表单时,请查看开发人员工具(在Chrome中)或FireBug(在Firefox中),我打赌您实际上并没有将任何数据传递到您的“操作页面”。当您在表单上调用serialize()
时,实际上并没有将其传递给页面。
尝试在$.ajax()
电话中添加以下内容:
data: JSON.stringify( data ),
另外,如果您要返回JSON,请使用此
dataType: 'json',
这将告诉jQuery自动将结果作为JSON处理。