AJAX 中的 PHP 代码到 POST


PHP code inside AJAX to POST

我正在尝试将PHP变量$last_id回显到AJAX以将其传递给PHP $_POST。也许我可以一起跳过 AJAX,只在 $_POST 内传输变量。我必须使用echo json_encode吗?

这是我的代码,看看我在这里要完成什么(感谢任何帮助):

注册.php

<?php
if(isset($_POST['submit'])) {
require 'connect.php';
$sql = "INSERT INTO table (username, password) VALUES ('".$_POST["username"]."','".$_POST["password"]."')";
if (mysqli_query($con, $sql)) {
$last_id = mysqli_insert_id($con);
    echo $last_id;
?>

我的脚本.js

// ----AJAX Post to PHP----->
function ajax_post(ele,div){
// XMLHttpRequest object
var hr = new XMLHttpRequest();
// variables send to PHP file
var url = "insert.php";
var userId = "<?php echo $last_id; ?>";
var vars = "userId="+userId;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
    if(hr.readyState == 4 && hr.status == 200) {
        var return_data = hr.responseText;
        document.getElementById("status").innerHTML = return_data;
        }
    }
}

插入.php

<?php
require 'connect.php';
$userId = $_POST['userId'];
$sql = "INSERT INTO table2 (userId) 
VALUES ('$userId')";
?>
嗨,

这就是将 php 变量传递到外部 js 文件的方法,

<?php
$last_id= "Red";
?>
<script type="text/javascript">var color = "<?= $last_id?>";</script>
<script type="text/javascript" src="myscript.js"></script>

试着让我知道

由于您发布的代码hr.send(vars)您缺少并且正如我所看到的,您的$last_id将在注册后出现。所以我建议你将该值存储在会话中,然后在需要时使用并在 ajax 调用后销毁会话。

<?php
if(isset($_POST['submit'])) {
require 'connect.php';
$sql = "INSERT INTO table (username, password) VALUES ('".$_POST["username"]."','".$_POST["password"]."')";
if (mysqli_query($con, $sql)) {
$last_id = mysqli_insert_id($con);
session_start();
$_SESSION['last_id'] = $last_id;
?>
// ----AJAX Post to PHP----->
function ajax_post(ele,div){
// XMLHttpRequest object
var hr = new XMLHttpRequest();
// variables send to PHP file
var url = "insert.php";
var vars = "userId=<?php echo $_SESSION['last_id']; ?>";
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
    var return_data = hr.responseText;
    document.getElementById("status").innerHTML = return_data;
    }
   }
}
hr.send(vars);