使用此方法的第一个计时器。我不知道它为什么没有返回指定的返回值。任何人都可以帮我纠正我的代码,所以我可以在下面的语句中得到一个返回值true / false:
$.post('php/username_check.php',{ username: uname, password: upass }, function(data){
if(data == 1) {
$('#result').html("Login successful!");
return true;
} else {
$('#result').html('<div style="color:red;border:1px solid red;padding:5px;">Username and password invalid.</div>');
return false;
}
});
答案 0 :(得分:0)
AJAX是异步的
请记住,回调函数不会立即执行,但会在结果返回时的某个时刻(可能)调用。这意味着您可以将“结果”逻辑放在该函数或该函数调用的其他函数中......例如:
function handleResult(success) {
if(success /* === 1*/) {
$('#result').html("Login successful!");
}
else {
$('#result').html('<div style="color:red;border:1px solid red;padding:5px;">Username and password invalid.</div>');
}
}
$.post('php/username_check.php', {username: uname, password: upass}, handleResult);
<强> jQuery.post 强>
jQuery.post方法是jQuery.ajax方法的快捷方式,它返回jqXHR个对象。
它不会返回从post方法提供的回调函数返回的值。
从jQuery 1.5开始,$ .ajax()方法返回jqXHR对象 是XMLHTTPRequest对象的超集。有关更多信息,请参阅 $ .ajax条目的jqXHR部分
有关jqXHR对象的更多信息,请参阅here。
答案 1 :(得分:0)
您正在使用jQuery将数据发布到指定的URL。传递给$.post
的函数(作为参数)是一个回调函数。
由于它是一个AJAX请求,通常它是异步的(除非你指定它是同步的。)因此,你的javascript不会等待$.post
的响应。它将继续运行到下一个声明。例如,如果您的代码如下:
function() {
$.post(......../* your coding */);
console.log('XXXXXXXXX');
}
上述功能几乎会同时处理$.post
和console.log
。 console.log
完成后,函数结束。
当收到$.post
的响应时,jQuery会调用你的回调函数来继续你的逻辑。