无法通过 JQuery POST 将数据发布到 php

Posted

技术标签:

【中文标题】无法通过 JQuery POST 将数据发布到 php【英文标题】:Unable to post data to php through JQuery POST 【发布时间】:2022-01-15 08:44:44 【问题描述】:

我有这个 JQuery POST 代码可以将数据发布到 .php 页面以更新数据库。 在不同的网站(我写的)上运行良好,我只是简单地复制粘贴相同的代码并更改了一些值。

现在问题出现在将从输入获取的数据发布到 .php 文件时。

我在所有可能的地方都进行了控制台登录,不明白为什么数据没有发布到 .php 文件中。

代码如下:

<form action="backend_functions/logincheck.php" method="post" id="logincheck" ></form>
<div class="form-group mt-4">
    <label>Email Address</label>
    <input type="text" id="login_form_email" form="logincheck" class="form-control" placeholder="Enter your email address" />
</div>
<div class="form-group">
    <label>Password</label>
    <input type="password" id="login_form_password" form="logincheck" class="form-control" placeholder="Enter your password" />
</div>
<div class="btn-group mt-3 w-100">
    <button type="button" id="login_submit_btn" class="">Log In</button>        
</div>

                        
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>

  $("#login_submit_btn").on('click',function() 
    console.log("button pressed");
    $(this).attr("disabled", true);
    let login_form_email = $("#login_form_email").val();
    let login_form_password = $("#login_form_password").val();
    console.log("value got at beggining - "+login_form_email);
    if(!login_form_email || !login_form_password) 
        $(".login_form_error_message_2").css("display","block");
        setTimeout(function()
            $(".login_form_error_message_2").css("display","none");
        , 2000);
        $(this).attr("disabled", false);
     else 
        console.log("onelse");
        $.post(
                'backend_functions/logincheck.php',
              
                 login_form_email: login_form_email,
                 login_form_password: login_form_password,
              ,
             function(result)
                 console.log(result);
                 if(result == 'error') 
                    $(".login_form_error_message").css("display","block");
                    setTimeout(function()
                        $(".login_form_error_message").css("display","none");
                    , 2000);
                    console.log("error returned");
                  else 
                    console.log("success");
                 
             
          );
             
    $(this).attr("disabled", false);
  
);
</script>

.php 文件:(查询仅用于测试。)

<?php include("../db.php"); 
    $login_form_email = $_POST['login_form_email'];
    $login_form_password = md5($_POST['login_form_password']);
    
    $date = date_default_timezone_set('Asia/Kolkata');
    $date = date('Y-m-d H:i:s');
    $date = date('Y-m-d');
    
    $sql = "UPDATE subadmin SET name = '$login_form_email'
            WHERE id = '8'";
    
    if ($con->query($sql) === TRUE) 
   echo $login_form_email.'success';
 else  echo $login_form_email.'fail'; 
?>

DB.php

<?php
    $servername = "localhost";
    $dbusername = "dbuser";
    $dbpassword = "dbpass";
    $dbname = "dbname";
    $conn = new mysqli($servername, $dbusername, $dbpassword, $dbname);

    define('HOST','localhost');
    define('USERNAME', 'dbuser');
    define('PASSWORD','dbpass');
    define('DB','dbname');
    $con = mysqli_connect(HOST,USERNAME,PASSWORD,DB);
    $con->set_charset('utf8mb4');
    $db = new PDO('mysql:host=localhost;dbname=dbname','dbuser','dbpass');

    $admin = 'vdofymail@gmail.com';
    //vdofymail@gmail.com
    session_start();
?>

现在控制台日志如下所示:

如您所见,我在控制台中得到 2x(成功),一个来自脚本,另一个来自 from.php 文件,该文件应与发布的 var 连接,即$login_form_email

谁能解释我做错了什么,它没有将数据发布到后端文件?

.php 文件的网络负载 (似乎数据正在发布..我猜)

仅供参考,我已尝试静态替换 .php 文件中的 $login_form_email 以查看其中是否有任何错误,工作正常。

只是,没有发布数据。

非常感谢任何帮助。

【问题讨论】:

危险:您使用的是an unsuitable hashing algorithm,需要take better care的用户密码。 @Quentin 你的意思是 md5,是的,我明白了。谢谢。 result == 'error' 永远不会是真的。 PHP 脚本回显$login_form_email.'success'$login_form_email.'fail',而不是error 或者使用event.preventDefault()来阻止表单提交。 检查 DevTools 的 Network 选项卡以查看正在发送到服务器的参数。 【参考方案1】:

原来 .htaccess 代码弄乱了 JQuery .post

不得不注释掉这个(我添加这个是为了从 URL 中删除 .php 扩展名):

# browser requests PHP
RewriteCond %THE_REQUEST ^[A-Z]3,9\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

请问.htaccess中的这段代码是JQuery .post函数无法发布数据的原因吗?

【讨论】:

检查这个:***.com/questions/13628831/…

以上是关于无法通过 JQuery POST 将数据发布到 php的主要内容,如果未能解决你的问题,请参考以下文章

无法解析来自 jQuery Ajax POST 的 Json 结果

POST 请求无法使用 JQuery AJAX

使用 jQuery post 方法安全吗?

jQuery post ajax函数[重复]

无法通过 Jquery.post 发送数组

jQuery POST 通过 CORS 到 web 服务