您好,我目前在触发 .ajaxComplete 函数时遇到问题,它应该可以在演示网站上运行。我从这里引用这个函数 http://www.bitrepository.com/a-simple-ajax-username-availability-checker.html
这是我的代码:
<SCRIPT type="text/javascript">
<!--
/*
Credits: Bit Repository
Source: http://www.bitrepository.com/web-programming/ajax/username-checker.html
*/
pic1 = new Image(16, 16);
pic1.src = "loader.gif";
$(document).ready(function(){
$("#userID").change(function() {
var usr = $("#userID").val();
if(usr.length >= 4)
{
$("#status").html('<img src="loader.gif" align="absmiddle"> Checking availability...');
$.ajax({
type: "POST",
url: "check.php",
data: "userID="+ usr,
success: function(msg){
$("#status").ajaxComplete(function(event, request, settings){
if(msg == "OK")
{
$("#userID").removeClass('object_error'); // if necessary
$("#userID").addClass("object_ok");
$(this).html(' <img src="tick.gif" align="absmiddle">');
}
else
{
$("#userID").removeClass('object_ok'); // if necessary
$("#userID").addClass("object_error");
$(this).html(msg);
}
});
}
});
}
else
{
$("#status").html('<font color="red">The username should have at least <strong>4</strong> characters.</font>');
$("#userID").removeClass('object_ok'); // if necessary
$("#userID").addClass("object_error");
}
});
});
//-->
</SCRIPT>
我曾尝试提醒 msg , check.php 能够返回 msg 值,但它停在 .ajaxComplete() 上,在那里它不会在 .ajaxComplete() 之后触发该函数。请引导我完成这个过程。谢谢
最佳答案
来自document
As of jQuery 1.8, the .ajaxComplete() method should only be attached to document.
所以
$(document).ajaxComplete(function(event, request, settings){
});
但是在你的代码中,不需要使用ajaxComplete,只有ajax调用完成时才会调用success回调,所以你可以直接在其中检查msg
的值。
$.ajax({
type: "POST",
url: "check.php",
data: "userID=" + usr,
success: function (msg) {
if (msg == "OK") {
$("#userID").removeClass('object_error'); // if necessary
$("#userID").addClass("object_ok");
$(this).html(' <img src="tick.gif" align="absmiddle">');
} else {
$("#userID").removeClass('object_ok'); // if necessary
$("#userID").addClass("object_error");
$(this).html(msg);
}
}
});
关于javascript - .ajaxComplete 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29890877/