Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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
Javascript PHP AJAX重定向。[帮助]_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript PHP AJAX重定向。[帮助]

Javascript PHP AJAX重定向。[帮助],javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个表单,它以一种模式的方式进行注册/登录。寄存器的部分工作正常。但是登录部分有重定向问题 我将下面的代码用于AJAX。我对我读到的关于windows.location的所有内容都做了大量的研究,但我不知道如何准确地做到这一点 阿贾克斯: PHP:我在尝试通过用户键入的银行/数据中的结果创建会话之前和之后进行我认为必要的检查 if ($result >1) { session_name('nacional'); session_start(); $_SESSIO

我有一个表单,它以一种模式的方式进行注册/登录。寄存器的部分工作正常。但是登录部分有重定向问题

我将下面的代码用于AJAX。我对我读到的关于windows.location的所有内容都做了大量的研究,但我不知道如何准确地做到这一点

阿贾克斯:

PHP:我在尝试通过用户键入的银行/数据中的结果创建会话之前和之后进行我认为必要的检查

if ($result >1) {
    session_name('nacional');
    session_start();
    $_SESSION['cpf']=$cpf;
    $_SESSION['senha']=$senha;


    header("Location: my_folder/index.php");

}
  • 注意:标题标记不是目标。我是否必须按照服务器返回ajax“ok”并更改目标的方式来做一些事情?如果是,如何进行

谢谢收听。

您应该向JavaScript发送JSON响应,而不是返回标题。标题在幕后重定向。在PHP中执行以下操作:

return json_encode(['success' => true]);
然后,在AJAX的成功方法中捕捉它。您还需要告诉AJAX使用JSON。将其放在方法和url参数之后,如下所示:

function logar() {
    $.ajax({
        method: "post",
        url: "validalogin.php",
        data: $("#login-form").serialize(),
        dataType: 'json'
    })
    .success(function(data){
        if (data.success == true) {
            alert(data);
            window.location.href = "folder/index.php";
        }
    });
}

我还没能使表格正常工作。我将在下面发布如何获得代码

表格:

AJAX(与表单在同一页上):

PHP:(我跳过了上面代码的一部分,但它不会影响这里的操作)

$sql=“从aluno\u登录中选择*,其中cpf='$cpf'和senha='$senha';
$result=mysql\u查询($sql,$conexao);
而($linha=mysql\u fetch\u row($result)){
如果($结果为假);
}
如果($result>1){
会议名称(“国家”);
会话_start();
$\会话['cpf']=$cpf;
$\会话['senha']=$senha;
返回json_encode('success'=>true);
}

这是否可行?

在使用ajax时,不能使用header重定向。如果要立即重定向,为什么要在此处使用ajax而不仅仅是发布到登录脚本?如果要这样做,可以使用window.location重定向javascript,前提是它从PHP传递了某个responseText语句。例如,在PHP中,如果结果大于1,则echo为1,在javascript中,如果responseText==1,则重定向。如果可能的话,我对我发送的第二个代码有点困惑,您的帮助将非常有效。谢谢你,你快到了。你忘记在你的“成功”电话前关闭括号了。看看我编辑的logar函数。我还修复了json_编码部分。它需要一个数组。虽然听起来不可思议,“返回”不起作用,但我切换到“回声”,它起作用了。无论如何,谢谢你。他们是像你这样的人,他们能带来不同。我也为英语感到抱歉,我不是英语母语……这是有道理的。如果您在函数中,则返回有效。如果您只是调用一个php文件,则需要回显您的结果。您可能需要研究MVC框架,例如Laravel。他们让很多事情变得非常简单,包括身份验证。我听说过,我通常把所有的项目都放在手上,一行一行的哈哈,我会在内容上做一个研究。因为它似乎让我的生活更轻松
function logar() {
    $.ajax({
        method: "post",
        url: "validalogin.php",
        data: $("#login-form").serialize(),
        dataType: 'json'
    })
    .success(function(data){
        if (data.success == true) {
            alert(data);
            window.location.href = "folder/index.php";
        }
    });
}
 function logar(){

    $.ajax({
        method: "post",
        url: "validalogin.php",
        data: $("#login-form").serialize(),
        dataType: 'json',
    success: function(data){

        if (data.success == true) {
            alert(data);
            window.location.href = "folder/index.php";
            }
        }

});
}
        $sql = "SELECT * FROM aluno_login WHERE cpf = '$cpf' and senha ='$senha'  ";

            $result = mysql_query($sql, $conexao);
                while($linha = mysql_fetch_row($result)) { 

                    if ($result <1){
                        unset ($_SESSION['cpf']);
                        unset ($_SESSION['senha']);
                        session_destroy();
                        //echo "Algo deu errado, tente novamente !";
                        //return json_encode('Error' => false);

                    }
                    if ($result >1) {
                        session_name('nacional');
                        session_start();
                        $_SESSION['cpf']=$cpf;
                        $_SESSION['senha']=$senha;
                        return json_encode('success' => true);





                    }