无法通过 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的主要内容,如果未能解决你的问题,请参考以下文章