我的ajax / php脚本有问题。
用于检查用户注册用户名的可用性。
的javascript
$(document).ready(function()
{
$("#username").change(function()
{
var usr = $("#username").val();
if(usr.length >= 4)
{
$("#status").html('<img src="./style/images/loading.gif"> Checking availability...');
$.ajax(
{
type: "POST",
url: "./ps/ajax_validation.php",
data: "username="+ usr,
success: function(msg)
{
$("#status").ajaxComplete(function(event, request, settings)
{
if(msg == 'OK')
{
$(this).html(' <img src="./style/images/tick.gif" align="absmiddle">');
}
else
{
$(this).html(msg);
}
});
}
});
}
else
{
$("#status").html('<font color="red">The username should have at least <strong>4</strong> characters.</font>');
}
});
});
HTML
...
<input class="login_reg_field" id="username" name="username" type="text" value="<?php echo @$d['username']?>" />
<div id="status"></div>
...
ajax_validation.php
<?php
include("../core/config.php");
if(isset($_POST['username'])){
$username = $_POST['username'];
$test = $user->checkUsernameAvaible($username); //Return True if Username IS Avaible
if(!$test){
echo '<font color="red">The nickname <STRONG>'.$username.'</STRONG> is already in use.</font>';
}else{
echo "OK";
}
}
?>
php脚本正常工作,我用$ _GET变量手动尝试..
尝试使用表单时,它在Firefox控制台上保持Checking avaibility...
并且没有Javascript错误。
我还检查过Tamper Data,ajax请求它正在制作,它就是。
问题似乎出现在$("#status").ajaxComplete(function(event, request, settings){
上,因为我在此行之后尝试了提醒,并且没有提醒任何警告。
答案 0 :(得分:0)
<强>更新.. 强>
成功被称为ajax调用成功。因此,没有必要在那里调用ajaxComplete ..(如果你认为存在问题)..
成功 如果请求成功则调用的函数。该函数传递三个参数:从服务器返回的数据,根据dataType参数格式化;描述状态的字符串;和jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象。从jQuery 1.5开始,成功设置可以接受一系列函数。每个函数将依次调用。这是一个Ajax事件。
你可以查看回复数据并做你的事情..
success: function(msg){
if(msg == 'OK')
{
$(this).html(' <img src="./style/images/tick.gif" align="absmiddle">');
}
else
{
$(this).html(msg);
}
}
我认为问题出在这里
$("#username").change(function()
{
change()
上的{p> input text
仅在您点击输入字段外的某处时触发.. //尝试一次。
您需要的是keyup()
$("#username").keyup(function()
{
答案 1 :(得分:0)
好的回答我自己的问题,我已经解决了。
要感谢itachi让我知道使用.done
代替success:
存在问题。
以下是该脚本的修订和工作部分:
var req = $.ajax(
{
type: "POST",
url: "./ps/ajax_validation.php",
data: "username="+ usr,
}).done(function(msg)
{
if(msg == 'OK')
{
$("#status").html(' <img src="./style/images/tick.gif" align="absmiddle">');
}
else
{
$("#status").html(msg);
}
});