Firefox блокирует запрос ajax post

#javascript #html #ajax

#javascript #HTML #ajax

Вопрос:

Я использую ajax для повторной отправки электронного письма с подтверждением моему пользователю, который зарегистрировался на сайте. Код отлично работает в моем браузере Chrome, но не в Firefox. На вкладке сети Firefox я вижу, что он заблокировал мой запрос post. Как я могу решить эту проблему, я не получаю никаких ошибок, это просто не работает. Скриншот вкладки Firefox networking.

введите описание изображения здесь

И вот как я использую ajax, я не могу использовать jQuery, поэтому я использую метод vanilla js.

 <!DOCTYPE html>
<head>
    <title>Verification</title>
    <script>
    document.addEventListener("DOMContentLoaded", function(event) { 
        document.getElementById("email_send").addEventListener("click", function() {
            function postAjax(url, data, success) {
                var params = typeof data == 'string' ? data : Object.keys(data).map(
                        function(k){ return encodeURIComponent(k)   '='   encodeURIComponent(data[k]) }
                    ).join('amp;');

                var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
                xhr.open('POST', url);
                xhr.onreadystatechange = function() {
                    if (xhr.readyState>3 amp;amp; xhr.status==200) { success(xhr.responseText); }
                };
                xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
                xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                xhr.send(params);
                return xhr;
            }
            postAjax('send_verification.php', { }, function(data){ 
                if (data === "verified"){
                    window.location ="login.php";
                } else if (data === "sent"){
                    document.getElementById('mydiv').innerHTML = '<span class="prego">Sent Again...</span>';
                }else if (data === "error"){
                    document.getElementById('mydiv').innerHTML = '<span class="prego">Unable Sent Again...</span>';
                }
                document.getElementById('mydiv').innerHTML = '<span class="prego">Just checking</span>';
                console.log(data " getting something");
            });
            
        });
    </script>
</head>
<body>
    <div class="text-center">
        <img src="images/sucess.gif" alt="sucess">
        <h4>A verification link have been sent to your email, Please flow instructions to activate your account.</h4>
        <br>
        <h4 class="text-center">Didn't get one? <a id="email_send" action="send_mail" href=""> click to resend.</a> </h4>
        <div id="mydiv">

        </div>
    </div>
</body>
</html>  

Кроме того, я попробовал fetch() метод для этого, но по какой-то причине fetch также блокируется.

Это запрос, который я делаю с помощью ajax.

 <?php
session_start();

include 'connection.php';

if(isset($_SESSION['email'])){
    
    $email = $_SESSION['email'];
    $email_check = $con->prepare("SELECT * FROM `user_reg` WHERE email =?");
    $email_check->bind_param("s",$email_i);
    $email_i = $email;
    $email_check->execute();
    $result = mysqli_stmt_get_result($email_check);
    $email_count = mysqli_num_rows($result);
    $row = mysqli_fetch_assoc($result);
    $token = bin2hex(random_bytes(25));
    if ($email_count>0){

        if($row['status']==="inactive"){

            $insert_query = $con->prepare("UPDATE `user_reg` SET `token`=? WHERE `email`=?");
            $insert_query->bind_param("ss", $token_i, $email_i);
            $token_i = $token;
            $email_i = $email;
            $query = $insert_query->execute();

            if ($query){

                $username = $row['username'];
                $url = "";
                $subject = "Email verification";

                include 'templates/email_con.php';
                include 'templates/email_verifiy_tempate.php';

            
                if (mail($email, $subject, $body, $headers)){
                    $_SESSION['msg']="Check your email for activation of your account";
                    echo "Email Sent...";
                    header('location:login.php');
                }else{
                    echo "Email not sent, please check your email";
                }
                $insert_query->close();
            }else{
                echo "error";
            }
        }else{
            $_SESSION['msg']="You are alredy verified, login to continue";
            echo "verified";
        }
    }else{
        echo "Email dosen't exists, please sign up";
    }
}else {
    header('location:login.php'); 
}  

Комментарии:

1. Есть ли ошибка, которой вы тоже можете поделиться? Можете ли вы также поделиться версией выборки?

2. какую ошибку вы получаете в консоли?

3. Не получая никакой ошибки. Только предупреждение на вкладке «Сеть».