Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 未使用Symfony定义AJAX值_Javascript_Php_Jquery_Ajax_Symfony - Fatal编程技术网

Javascript 未使用Symfony定义AJAX值

Javascript 未使用Symfony定义AJAX值,javascript,php,jquery,ajax,symfony,Javascript,Php,Jquery,Ajax,Symfony,实际上,我尝试使用AJAX和Symfony进行自定义身份验证,但我遇到了一个无法识别的问题。 AJAX部分似乎找不到路由,因为我的浏览器控制台无法“识别”我的路由脚本。我试图将AJAX数据与输入字段数据进行比较,问题是AJAX返回未定义的值。我将把代码的不同部分放在下面: 带有AJAX脚本的细枝模式: <div class="modal fade" tabindex="-1" role="dialog" id="logi

实际上,我尝试使用AJAX和Symfony进行自定义身份验证,但我遇到了一个无法识别的问题。 AJAX部分似乎找不到路由,因为我的浏览器控制台无法“识别”我的路由脚本。我试图将AJAX数据与输入字段数据进行比较,问题是AJAX返回未定义的值。我将把代码的不同部分放在下面:

带有AJAX脚本的细枝模式:

<div class="modal fade" tabindex="-1" role="dialog" id="loginModal">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Connexion</h4>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            </div>
            <div class="modal-body" align="center">
                <form action="#" method="POST">
                    <label for="pseudoMail">Pseudo ou e-mail : </label>
                    <input type="text" id="pseudoMail" placeholder="Pseudo ou e-mail" name="pseudoMail" required><br>
                    <label for="mdp">Mot de passe : </label>
                    <input type="password" id="mdp" placeholder="Mot de passe" name="mdp" required><br>
                    <input type="submit" class="btn btn-primary" id="login" value="Se connecter" />
                </form>
            </div>
        </div>
    </div>
</div>
<script src="{{ asset('js/jquery-3.5.1.min.js') }}"></script>
<script>

    $(document).ready(function () {
        $("#login").click(function()
        {
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
            $.ajax({
                type: 'POST',
                url: '{{ path('checkLogin') }}',
                data: {
                    pseudo: $("input#pseudoMail").val(),//TODO Remplir l'Ajax de façon à ce que les données soient reconnues
                    motdepasse: $("input#mdp").val()
                },
                dataType: 'json',

                success: function(data)
                {
                    if(data.pseudo !== "" && data.motdepasse !== "")//TODO Modifier la condition et jouer les sons correspondants (dossier sfx)
                    {
                        setTimeout(alert("Vous êtes connecté !"), 5000);
                        var sound = document.createElement('audio');
                        sound.setAttribute('src', 'https://themushroomkingdom.net/sounds/wav/smb/smb_1-up.wav');
                        sound.play();
                    }
                    else
                    {
                        alert("Les identifiants ne correspondent pas. Veuillez réessayer.");
                        var sound = document.createElement('audio');
                        sound.setAttribute('src', 'https://themushroomkingdom.net/sounds/wav/smb/smb_fireworks.wav');
                        sound.play();
                    }
                },
                error: function(data)
                {
                    console.log("Pseudo : " + data.pseudo);
                    console.log("Mot de passe : " + data.motdepasse);
                    console.log("Pseudo sans data : " + $('input#pseudoMail').val());
                    console.log("Mot de passe sans data : " + $('input#mdp').val());
                    console.log(data);
                    alert("Erreur détectée ! " + data);
                }
            });
        });
    });
</script>
正如charlietfl所说,AJAX代码和PHP代码之间的键不同。他们应该平等

data: {
      pseudo: $("input#pseudoMail").val(),
      motdepasse: $("input#mdp").val()
},
在AJAX请求中,键是
pseudo
motdepasse
。因此,在PHP代码中,您应该使用如下键:

$pseudoMail = $request->request->get('pseudo');
$motdepasse = $request->request->get('motdepasse');

此路由是否启用了
POST
方法类型?“$request-get-key与您发送的不同我尝试了您的解决方案,但不起作用(顺便感谢您的回答,我不知道这些键应该相等,我是AJAX初学者)。我认为这是一个路径问题,因为当我检查我的浏览器控制台时,我的PHP脚本根本没有加载。控制台向我显示一条消息,说明无法加载资源。这让我觉得路由根本不被识别,它不仅仅是一个关键错误。如果您需要更多代码来帮助您,请尽管问我。再次感谢您的帮助。您可以使用Symfony日志(在cmd中启动命令
Symfony server:start
后)进行调试,也可以使用网络选项卡中的浏览器调试器(F12)进行调试,并通过单击XHR显示XHR请求日志。这是我所做的,但我遇到了一个错误,无法检查我的PHP代码。这就是为什么我认为这是AJAX脚本中URL参数的路径问题。我会给你看我得到的截图:。当我尝试检查“checkLogin”PHP脚本时,我无法检查任何内容。是否可以在AJAX脚本中使用twig语法(如果脚本在twig文件中)?因为这可能就是错误。再次感谢你。编辑:我正在使用Safari浏览器,也许这些信息会有帮助。好的,我发现了一些可能导致我的项目出现问题的其他信息。我将event.preventDefault()放在ajax函数的顶部,以避免页面自身刷新。现在我可以在XHR选项卡上看到一些内容,并在浏览器控制台上看到更多信息。我会试着找出另一个问题在哪里。这个问题现在已经解决了。我在理解数据处理过程中遇到了一些困难,但现在一切都正常了!我将把这个问题标记为已解决。非常感谢。
$pseudoMail = $request->request->get('pseudo');
$motdepasse = $request->request->get('motdepasse');