我有一个jquery POST功能,我无法正确完成你能帮帮我吗?
function submitlogin() {
var form = document.login;
var action = "chk_login";
$.post("action.php", {
action: action,
user: form.user.value,
pass: form.pass.value
}, function(data) {
if (data=="loginok")
return true;
else
return false;
}
);
}
我的想法是,当我提交登录表单时,会从action.php获取一张支票。 如果用户和传递是正确的,我的函数submitlogin必须返回TRUE,如果错误,则返回FALSE。你能帮我清除我的问题。目前,当我设置alert(data)它从action.php中输出文本以便连接正确时,我的问题只是从post函数获取结果为TRUE或FALSE
答案 0 :(得分:2)
来自ajax请求的回调并不关心返回值:
$.post("action.php",
{
action: action,
user: form.user.value,
pass: form.pass.value
},
function(data)
{
if(data=="loginok")
return true;
else
return false;
});
当你从回调中说return true
时,jQuery库中没有任何内容检查该值。当按下按钮时,您似乎正在尝试基本执行表单验证检查;你将事件模型与同步调用混淆了。
这是怎么回事:
-> Call to submitLogin();
-> Invokes jQuery POST Ajax Method
-> Immediately exits submitLogin
-> When the POST request is complete, calls the callback
你需要做的事情可能是这样的:
function submitlogin()
{
var form = document.login; var action = "chk_login";
$.post("action.php",
{
action: action,
user: form.user.value,
pass: form.pass.value
},
function(data)
{
if(data == "loginok")
$('#myForm').submit();
});
return false;
}
答案 1 :(得分:0)
首先$.post
本质上是异步的,所以函数不会等待它返回。第二件事是你试图从错误的后成功处理程序返回true / false。
您可以尝试将$ .ajax与async false一起使用。
function submitlogin() {
var form = document.login; var action = "chk_login";
var returnVal = false;
$.ajax({
url: "action.php",
async: false
data: {action: action, user: form.user.value, pass: form.pass.value},
success: function(data){
returnVal = (data=="loginok");
}
});
return returnVal;
}