我发现我在jQuery远程验证中发现了错误。我试图在谷歌搜索任何解决方案,我尝试了所有但没有运气它仍然有错误。尽管数据库中不存在sno,但它总是返回false。请帮帮我。谢谢
这是我的form.js示例代码:
jQuery("#form1").validate({
rules: {
industry: "required",
sno: {
required:true,
remote: "check-sno.php"
},
messages: {
sno: {
required:"Please Enter Source Number",
remote: "S.No is already taken."
},
这是我的check-sno.php代码:
<?php
$mysqli = new mysqli('localhost','root','','csci311');
if (!empty($_POST['sno']))
{
$sno = $mysqli->real_escape_string($_POST['sno']);
$query = "SELECT sno FROM prospects WHERE sno = '{$sno}'";
$results = $mysqli->query($query);
if($results->num_rows == 0)
{
echo "true";
}
else
{
echo "false";
}
}
else
{
echo "false";
}
?>
我有没有查询错误?请纠正我,谢谢:)
FYI,form.js中的远程函数。它总是提示远程消息我是否输入现有的sno或不是现有的sno。
验证后我需要返回任何值吗?
答案 0 :(得分:0)
通过jQuery.ajax(XMLHttpRequest)调用serverside资源,并获取与已验证元素的名称对应的键/值对及其值作为GET参数。响应被评估为JSON,对于有效元素必须为
true
,对于无效元素,可以使用默认消息为false
,undefined
或null
;或者是一个字符串...
默认情况下,remote
方法使用 GET 方法,但是,您的PHP正在寻找 POST 变量$_POST
。 ..
if (!empty($_POST['sno'])) ....
由于$_POST
使用GET时没有remote
变量,因此它始终为empty
,因此您始终会回显false
并触发验证消息。< / p>
只需将type
选项添加到remote
规则,即可将默认方法从GET
更改为POST
...
sno: {
required:true,
remote: {
url: "check-sno.php",
type: "post" // <- use the POST method
}
},
BTW- remote
规则/方法将接受与jQuery .ajax()
相同的所有选项。
修改强>:
如果你的PHP坏了,除了验证消息之外你什么都得不到。根据文档,false
,undefined
或null
响应都会触发验证错误。换句话说,您必须进行一些故障排除,以独立验证您的PHP是否正常运行。