我有一段代码用于检查是否可以使用jQuery AJAX调用获得所需的用户名:
function check_username()
{
// Set user_name to the current value of input #new_user_name
var user_name = document.getElementById('new_user_name').value;
// Ajax to check availability of username
$.ajax({
url: '_check_username.php',
type: 'post',
data: { 'user_name': user_name },
success: function(data) {
var does_it_pass_or_fail = data;
if ( does_it_pass_or_fail === "fail" )
{
alert( "Sorry, the username already exists. does_it_pass_or_fail = " + does_it_pass_or_fail ); );
}
else
{
alert( "That username is available! does_it_pass_or_fail = " + does_it_pass_or_fail ); );
}
}, error: function() {
// Not sure what to put here...
}
});
}
脚本按预期工作 - 我在_check_username.php上检查MySQL数据库,并成功返回"传递"如果名称可用,或者"失败"如果已经采用该名称,则将其存储在JS变量do_it_pass_or_fail中。
然而,无论do_it_pass_or_fail是否包含"传递"或者"失败",我只得到回复"该用户名可用!"
所以,AJAX / PHP / MySQL部分似乎工作得很好,但是这个简单的JavaScript if语句让我感到难过!
答案 0 :(得分:1)
尝试使用这个:你的代码中有一些语法错误,接近alert.try日志记录错误。
function check_username()
{
// Set user_name to the current value of input #new_user_name
var user_name = document.getElementById('new_user_name').value;
// Ajax to check availability of username
$.ajax({
url: '_check_username.php',
type: 'post',
data: { 'user_name': user_name },
success: function(data) {
var does_it_pass_or_fail = data;
console.log(data);
if ( does_it_pass_or_fail === "fail" )
{
alert( "Sorry, the username already exists. does_it_pass_or_fail = " + does_it_pass_or_fail );
}
else
{
alert( "That username is available! does_it_pass_or_fail = " + does_it_pass_or_fail );
}
}, error: function(erro) {
console.log(error);
}
});
}
答案 1 :(得分:0)
success: function(data) {
console.log(data)
}
这可以帮助您调试ajax问题。
答案 2 :(得分:0)
使用firebug调试ajax请求。 地方
console.log(data);
在成功功能中。
答案 3 :(得分:0)
感谢大家带领我进一步检查AJAX电话。
事实证明,我的' _check_username.php'脚本在返回之前返回换行符" pass"或"失败" - 所以,当然," \ npass"是一个不同于#34;传递"的字符串。一旦我意识到这一点,我就能修复脚本。