我對jQuery和javascript編程非常新穎。我有一個下面的程序檢查用戶名是否被佔用。目前,PHP腳本始終返回。jQuery.validator.addMethod中的.post總是返回false
if(isset($_POST["username"]))//&& isset($_POST["checking"]))
{
$xml="<register><message>Available</message></register>";
echo $xml;
}
登錄函數可以工作,但用戶名檢查不會。有任何想法嗎? 這裏是我的所有代碼:
$(document).ready(function() {
jQuery.validator.addMethod("checkAvailability",function(value,element){
$.post("login.php" , {username:"test", checking:"yes"}, function(xml){
if($("message", xml).text() == "Available") return true;
else return false;
});
},"Sorry, this user name is not available");
$("#loginForm").validate({
rules: {
username: {
required: true,
minlength: 4,
checkAvailability: true
},
password:{
required: true,
minlength: 5
}
},
messages: {
username:{
required: "You need to enter a username." ,
minlength: jQuery.format("Your username should be at least {0} characters long.")
}
},
highlight: function(element, errorClass) {
$(element).fadeOut("fast",function() {
$(element).fadeIn("slow");
})
},
success: function(x){
x.text("OK!")
},
submitHandler: function(form){send()}
});
function send(){
$("#message").hide("fast");
$.post("login.php" , {username:$("#username").val(), password:$("#password").val()}, function(xml){
$("#message").html($("message", xml).text());
if($("message", xml).text() == "You are successfully logged in.")
{
$("#message").css({ "color": "green" });
$("#message").fadeIn("slow", function(){location.reload(true);});
}
else
{
$("#message").css({ "color": "red" });
$("#message").fadeIn("slow");
}
});
}
$("#newUser").click(function(){
return false;
});
});
對不起:(它沒有工作,返回false我已經改變了成功的回調函數爲:如果($( 「信息」,XML)的.text()== 「Available」)return true; else return false; – 2010-06-06 08:09:55
@abdullah - 這個'return'函數沒有什麼區別,只是額外的代碼......如果你發佈的答案有效,但是這個並不是那個php文件你的問題是不準確的,你應該更新它 – 2010-06-06 09:57:43
@Nick:我認爲問題是虛擬函數返回「checkAvailability」之後的參數,它是函數(值,元素){} 。實際上,它返回什麼〜=假, 對?它只是做了一些ajax函數,它返回了一些值。但是「函數(值,元素)」本身並沒有返回任何東西。我是一個初學者,只是我的想法雖然:) – 2010-06-06 21:41:28