我正在我的开发站点中处理一个项目,该项目的代码与我的生产站点的代码完全相同。
这是一个使用ajax的简单表单验证。以下是dispuser.php的代码:
$username = protect($_POST['user_name']);
$dispuser = new user();
$dispuser->username = $username;
$res = $dispuser->get("all");
$num = mysql_num_rows($res);
if ($num>0)
{
echo "no";
}
else
{
echo "yes";
}
这是javascript代码:
$(document).ready(function()
{
$("#username").blur(function()
{
$("#msgbox").removeClass().addClass('messagebox').text('Verificando...').fadeIn("slow");
$.post("./dispuser.php",{ user_name:$(this).val() } ,function(data)
{
if(data=='no')
{
document.getElementById("submitBT").disabled = true;
$("#msgbox").fadeTo(200,0.1,function()
{
$(this).html('Not available').addClass('messageboxerror').fadeTo(900,1);
});
}
else
{
$("#msgbox").fadeTo(200,0.1,function()
{
document.getElementById("submitBT").disabled = false;
$(this).html('Available!').addClass('messageboxok').fadeTo(900,1);
});
}
});
});
});
这是html代码:
<td><label for="username">Usuário: </label></td>
<td><input type="text" name="username" id="username" /></td>
<td><span id="msgbox" style="display:none; no-padding;"></span></td>
我已经用firebug跟踪了响应,一切都很好!(当用户可用时返回"是",当用户不可用时则返回"否"。
我在pp.atoanavida.com.br/registro.php
和www.pesometro.com.br/registro.php
中有完全相同的代码
您可以尝试使用用户"atoanavida"。它不可用,而且两个数据库完全相同。
我的问题是:我的生产站点运行正常,当用户不可用时显示正确的消息。在我的开发站点上,它有相同的代码,脚本总是显示"用户可用"。
由于某些原因,返回的数据为"''no"如NewLine,然后是no。您可以修复这个php端,或者在if(data=='no')…之前简单地修剪javascript中的数据。。。
像这样:
data = data.replace(/^'s+|'s+$/g,"");