这是我的 main.js 文件中的内容:
$("#login-form").submit(
function() {
$("#message").removeClass().addClass('messagebox').html(
'<img src="public/images/loading.gif" />Validating....').fadeIn(1000);
$.post("login/run", {
username : $('#username').val(),
password : $('#password').val()
}, function(data) {
if (data == 'yes') {
// add message and change the class of the box and start
// fading
$("#message").fadeTo(
200,
0.1,
function() // start fading the messagebox
{
$(this).html('Logging In...').addClass(
'messageboxok').fadeTo(900, 1,
function() {
// redirect to secure page
document.location = 'secure.php';
});
});
} else {
alert(data);
$("#message").fadeTo(
200,
0.1,
function() // start fading the messagebox
{
// add message and change the class of the
// box and start fading
$(this).html('Your username or password is incorrect')
.addClass('messageboxerror')
.fadeTo(900, 1);
});
}
});
return false;
}
);
这是它所指的功能(当前设置为始终回显 yes 以强制结果为正)
public function run() {
echo 'yes';
}
我遇到的问题是当我执行警报(数据)时,警报显示我得到的输出是正确的,但是 IF 函数仅执行 ELSE 部分,无论数据是否为是。
另一个令人困惑的部分是,在我昨晚睡觉之前,这段代码运行良好——只是现在不行。
我的语法在任何地方都有问题吗?
编辑 1
修改方式:在$.post区域的末尾添加了,'json' ,在echo中添加了json_encode
main.js 到:
//login form ajax
$("#login-form").submit(
function() {
$("#msgbox").removeClass().addClass('messagebox').html(
'<img src="public/images/loading.gif" />Validating....').fadeIn(1000);
$.post("login/run", {
username : $('#username').val(),
password : $('#password').val()
}, function(data) {
if (data == 'yes') {
// add message and change the class of the box and start
// fading
$("#msgbox").fadeTo(
200,
0.1,
function() // start fading the messagebox
{
$(this).html('Logging In...').addClass(
'messageboxok').fadeTo(900, 1,
function() {
// redirect to secure page
document.location = 'secure.php';
});
});
} else {
alert(data);
$("#msgbox").fadeTo(
200,
0.1,
function() // start fading the messagebox
{
// add message and change the class of the
// box and start fading
$(this).html('Your username or password is incorrect')
.addClass('messageboxerror')
.fadeTo(900, 1);
});
}
}, 'json');
return false;
});
//end login form ajax
和功能:
public function run() {
echo json_encode('yes');
}
编辑 2
更改为 $.ajax,使函数返回一个 JSON 编码的数组
主.js:
$("#login-form").submit(
function() {
$("#msgbox").removeClass().addClass('messagebox').html(
'<img src="public/images/loading.gif" />Validating....').fadeIn(1000);
$.ajax({
url: 'login/run',
dataType: 'json',
type: 'POST',
data: {
username : $('#username').val(),
password : $('#password').val()
},
success: function(data){
alert(data.result);
if (data.result == 'yes') {
// add message and change the class of the box and start
// fading
$("#msgbox").fadeTo(
200,
0.1,
function() // start fading the messagebox
{
$(this).html('Logging In...').addClass(
'messageboxok').fadeTo(900, 1,
function() {
// redirect to secure page
document.location = 'secure.php';
});
});
} else {
alert(data);
$("#msgbox").fadeTo(
200,
0.1,
function() // start fading the messagebox
{
// add message and change the class of the
// box and start fading
$(this).html('Your username or password is incorrect')
.addClass('messageboxerror')
.fadeTo(900, 1);
});
}
//return false;
}
});
return false;
});
功能:
public function run() {
$result = array('result' => 'yes');
echo json_encode($result);
}