0

我在我的一种形式中有这个javascript。这是登录表单我从表单本身获取 URL 我使用 API 样式,(“不确定我的概念是否正确”)但我会附上代码

var formup = $('#loginfrom');
formup.submit(function () {
    $.ajax({
        type: formup.attr('method'),
        url: formup.attr('action'),
        data: formup.serialize(),
        success: function (data) {
            alert('you have successfuly logged in');
            window.location = "profile.html";
        }
    });

    return false;
});

这是我从 api 文件调用的登录函数

if(!mysql_fetch_array($result)){
return $res;
}
else
    return $resc;

其中 $res 返回“错误”,而 $resc 返回“正确”

和我的 api.php

if(!isset($function))
        $resp['err'] = "Function: ".$action." does not exist";
    else
        $resp = $function($request);

当我输入正确的用户名和密码时,它工作正常,我被定向到用户配置文件。

但是,如果我输入的用户名或密码不正确,我不知道如何处理 我不想被定向到个人资料

我确实认为 php 的返回应该做一些事情来告诉 javascript 登录不起作用然后做其他事情

请为我提供有关此问题的帮助,我将不胜感激。

4

4 回答 4

1

请求总是成功的,因此您必须检查data变量的值以重定向到错误页面

...
success: function (data) {
  if ( data == 'correct') {
    alert('you have successfuly logged in');
    window.location = "profile.html";
  } else {
     // handle error
  }
}
...
于 2013-05-16T05:49:06.607 回答
0

将您的登录代码更改为此

if(!mysql_fetch_array($result)){
  echo 'failure'; die;
}
else    {
    echo 'success'; die;
}

并将您的 ajax 成功更改为此

success: function (data) {
        if (data == 'success') {
            alert('you have successfuly logged in');
            window.location = "profile.html";
        } else {
             alert('Login Failed');
        }
    }
于 2013-05-16T05:48:05.037 回答
0

使用 datatype as json 从 php 获取返回值。在下面的代码中检查我的建议。

$.ajax({
        type: formup.attr('method'),
        url: formup.attr('action'),
        data: formup.serialize(),
        dataType: 'json',
        success: function (data) {

            if(data.error == 0) {
                alert('you have successfuly logged in');
                window.location = "profile.html";
            } else {

                alert("error");
            }
        }
    });

在您的 php 文件中,将 $res 和 $resc 转换为数组,然后使用 json_encode。像这样,

if(!mysql_fetch_array($result)){
    echo array('value'=>$res,'error'=>0);
}
else
    echo array('value'=>$res,'error'=>1);
于 2013-05-16T05:49:09.433 回答
0

你可以对数据做一些事情,或者你可以让 PHP 返回一个 401 状态,如果你用你的 PHP 返回一些东西而不是 401 状态,那么你可以让你的 JavaScript 检查返回的文本:

var formup = $('#loginfrom');
formup.submit(function () {
    $.ajax({
        type: formup.attr('method'),
        url: formup.attr('action'),
        data: formup.serialize(),
        success: function (data) {
            console.log(data);
            // check your console (press F12 in Chrome or Firefox with firebug plugin)
            // do something if the data is valid.
            window.location = "profile.html";
        }
    });

    return false;
});

当 PHP 中的登录失败并且您想要返回 401 时(导致您的 javascript 成功函数不被调用,但您可能需要 JS 中的失败/错误函数。

header("HTTP/1.0 401 Unauthorized");

并且您需要在您的 javaScript 中添加一个失败回调,以便用户知道登录失败:

    $.ajax({
        ...
        success: function (data) {
          ...
        },
        error: function(){
           //inform the user
        }
    });
于 2013-05-16T05:56:16.517 回答