我正在ColdFusion 11环境中工作。我想创建一个表单,在提交时验证我输入的值是否已经存在于数据库中。我想我正在混淆服务器端和客户端,这是问题的原因。与服务器端和客户端验证冲突
查询:
<cfquery name="FindIdMailExist" datasource="#application.zips_database#" username="#application.zips_username#" password="#application.zips_password#">
SELECT *
FROM users
WHERE user_name = '#userName#'
</cfquery>
我的JavaScript(客户端)+一些CF代码(服务器端):
<script>
function CheckSub()
{
alert("submited");
return true;
}
function checkName(formObject, formField, fieldValue)
{
<cfoutput>
alert('#FindIdMailExist.RecordCount#');
</cfoutput>
return true;
}
<script>
我的形式:
<cfform onsubmit="CheckSub()" name="form">
<br>
<table>
<tr><td width="120" align="right">Name:</td><td><cfinput name="userName"type="text" onvalidate="checkName" message="pas email"></td></tr>
<tr><td><cfinput name="Submit" type="submit" value="Register"></td></tr>
</table>
</cfform>
所以一切对一件事情期待很好。如果您了解代码,则会显示警报,结果为1或0. 1 =是数据库已包含此名称。 0 =否,数据库尚未拥有它。问题是,当我点击提交结果是1稍后提交。
例如:
- 进入一个已经存在的名称,然后单击提交:结果= 0(错误的)
- 输入任何内容:结果1(结果总是一个我以前提交)
所以也许不可能在提交表单之前验证服务器端? 在发送表单以将数据添加到数据库之前,我想确保一切都很好。为了安全起见,我想做这个服务器端。
任何人都可以提出更好的方法吗?
谢谢你的帮助!
您可以使用ajax轻松完成此操作。为什么不ajax? –
嗡嗡声你觉得如果我用阿贾克斯一切都会同步惠特没有延迟?让我试试吧! :D thx的提示...如果你想你可以给我一个例子...非常感谢 – Kazimar
在客户端,你可以更进一步,不包括提交按钮,直到数据通过(不是空白,而不是db)。 –