如何检查jquery帖子的结果?

时间:2011-08-23 16:49:56

标签: jquery post

我有一个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

2 个答案:

答案 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; 
}