Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用ajax提交登录表单_Php_Javascript_Ajax_Jquery - Fatal编程技术网

Php 使用ajax提交登录表单

Php 使用ajax提交登录表单,php,javascript,ajax,jquery,Php,Javascript,Ajax,Jquery,我有一个javascript表单。 这是登录表单 我从表单本身获取URL 我使用的是API风格(“不确定我的概念是否正确”) 但我会把代码贴下来 var formup = $('#loginfrom'); formup.submit(function () { $.ajax({ type: formup.attr('method'), url: formup.attr('action'), data: formup.serialize(),

我有一个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登录不起作用,然后再做其他事情


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

将您的登录代码更改为此

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');
        }
    }

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

...
success: function (data) {
  if ( data == 'correct') {
    alert('you have successfuly logged in');
    window.location = "profile.html";
  } else {
     // handle error
  }
}
...

使用datatype作为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);

您可以对数据执行某些操作,也可以让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中的fail/error函数)时

header("HTTP/1.0 401 Unauthorized");
您需要在javaScript中添加失败回调,以便用户知道登录失败:

    $.ajax({
        ...
        success: function (data) {
          ...
        },
        error: function(){
           //inform the user
        }
    });

谢谢,这真的很有帮助,很简单!天哪,数据是我从php代码中返回的。非常感谢你,我这次做对了。我有几个回声消除了它们